为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中,目录模块的__init__.py执行此操作不是一个好主意吗?

在Python中,目录模块的__init__.py执行此操作不是一个好主意吗?

小怪兽爱吃肉 2021-03-24 19:12:17
我有一个包含几个包含__init__.py文件的子目录的软件包。这些文件执行检查和初始化作业。现在我在其中一些文件夹中还有一个文件,该文件不应该被一个直接引用,import因为它依赖于在其各自中执行的健全性检查__init__.py。让我们将这些称为“隐藏模块”-按照惯例,我使用下划线将其显而易见。在我的内部__init__.py(_implementation.py位于同一文件夹中)执行以下操作不是一个好主意:import os, sysif sanity_check_successful:    from ._implementation import *    __all__ = sys.modules[__name__ + "._implementation"].__all__这个想法应该很清楚,每当完整性检查失败时,我都会尝试在软件包的每个模块级别提供有意义的错误信息。这是一个坏主意,即__all__从“隐藏模块”复制阵列吗?如果是这样,为什么而且还有更好的选择?优点:是否有更简洁的方式编写这两行?    from ._implementation import *    __all__ = sys.modules[__name__ + "._implementation"].__all__特别让我感到困扰的是,我必须"._implementation"在一个地方使用字符串,而在另一个地方使用模块名称。
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

有更简单的方法可以__all__从._implementation子模块进行设置。设置__all__否则很好:


from ._implementation import *

from ._implementation import __all__

这只是简单地导入__all__并将其绑定到本地模块名称空间__all__。


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信