我有一个导入模块的模块,但在某些情况下,正在导入的模块可能不存在。在导入模块之后,就有一个类继承自一个类,即导入的模块。如果我要捕获模块不存在的情况下的ImportError异常,我如何阻止解析模块的其余部分?如果不可能的话,我愿意接受其他的解决方案。
下面是一个基本示例(selfaware.py):
try:
from skynet import SkyNet
except ImportError:
class SelfAwareSkyNet():
pass
exit_module_parsing_here()
class SelfAwareSkyNet(SkyNet):
pass我唯一能想到的办法是:
selfaware.py模块之前,检查skynet模块是否可用,只需传递或创建存根类即可。如果selfaware.py多次被导入,这将导致DRY。selfaware.py中使用try块定义了类。例如:尝试:从天网导入skynet类SelfAwareSkyNet( SkyNet ):pass ( ImportError: class SelfAwareSkyNet():pass )
发布于 2009-02-23 10:34:43
你可以用:
try:
from skynet import SkyNet
inherit_from = SkyNet
except ImportError:
inherit_from = object
class SelfAwareSkyeNet(inherit_from):
pass只有在实现没有不同的情况下,这才能起作用。
编辑:评论后的新解决方案。
发布于 2009-02-23 10:51:16
try:支持clause :子句
try:
from skynet import SkyNet
except ImportError:
class SelfAwareSkyNet():
pass
else:
class SelfAwareSkyNet(SkyNet):
passhttps://stackoverflow.com/questions/577119
复制相似问题