我有一个包含几个包含__init__.py
文件的子目录的包。这些文件执行检查和初始化作业。
现在我在其中一些文件夹中还有一个不应该被 an 直接引用的文件,import
因为它依赖于在其各自的__init__.py
. 让我们将这些称为“隐藏模块”——作为惯例,我使用下划线使它们变得明显。
在我的__init__.py
(_implementation.py
位于同一文件夹中)中执行以下操作是否是一个坏主意:
import os, sys
if sanity_check_successful:
from ._implementation import *
__all__ = sys.modules[__name__ + "._implementation"].__all__
这个想法应该很清楚,每当完整性检查失败时,我都会尝试在包中的每个相应模块级别提供有意义的错误信息。
这是一个坏主意,即__all__
从“隐藏模块”复制数组吗?如果是这样,为什么以及是否有更好的选择?
加分点:有没有更简洁的方式来写这两行?:
from ._implementation import *
__all__ = sys.modules[__name__ + "._implementation"].__all__
特别是让我很恼火的是,我必须在一个地方使用一个字符串"._implementation"
并在另一个地方使用一个模块名称。