我有一个包含几个包含__init__.py文件的子目录的软件包。这些文件执行检查和初始化作业。
现在我在其中一些文件夹中还有一个文件,该文件不应该被一个直接引用,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"在一个地方使用字符串,而在另一个地方使用模块名称。
慕尼黑的夜晚无繁华
相关分类