我有一个导入模块的模块,但在某些情况下,导入的模块可能不存在。导入模块后,有一个类继承了导入模块的类。如果我在模块不存在的情况下捕获ImportError
异常,我怎样才能阻止Python解析模块的其余部分?如果不可能,我会对其他解决方案持开放态度。
这是一个基本示例(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
块定义了类。 e.g:
try:
from skynet import SkyNet
class SelfAwareSkyNet(SkyNet):
pass
except ImportError:
class SelfAwareSkyNet():
pass
答案 0 :(得分:8)
尝试:支持else:子句
try:
from skynet import SkyNet
except ImportError:
class SelfAwareSkyNet():
pass
else:
class SelfAwareSkyNet(SkyNet):
pass
答案 1 :(得分:2)
您可以使用:
try:
from skynet import SkyNet
inherit_from = SkyNet
except ImportError:
inherit_from = object
class SelfAwareSkyeNet(inherit_from):
pass
仅当实现没有区别时才有效。
修改:评论后的新解决方案。