首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在模块完成解析之前退出?

如何在模块完成解析之前退出?
EN

Stack Overflow用户
提问于 2009-02-23 10:15:09
回答 2查看 2.3K关注 0票数 6

我有一个导入模块的模块,但在某些情况下,正在导入的模块可能不存在。在导入模块之后,就有一个类继承自一个类,即导入的模块。如果我要捕获模块不存在的情况下的ImportError异常,我如何阻止解析模块的其余部分?如果不可能的话,我愿意接受其他的解决方案。

下面是一个基本示例(selfaware.py):

代码语言:javascript
复制
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 )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-23 10:34:43

你可以用:

代码语言:javascript
复制
try:
   from skynet import SkyNet
   inherit_from = SkyNet
except ImportError:
   inherit_from = object

class SelfAwareSkyeNet(inherit_from):
    pass

只有在实现没有不同的情况下,这才能起作用。

编辑:评论后的新解决方案。

票数 2
EN

Stack Overflow用户

发布于 2009-02-23 10:51:16

try:支持clause :子句

代码语言:javascript
复制
try:
    from skynet import SkyNet

except ImportError:
    class SelfAwareSkyNet():
        pass

else:
    class SelfAwareSkyNet(SkyNet):
        pass
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/577119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档