您可以做到这一点,但这并不是一个好主意,您正在与Python模块/软件包应该工作的方式作斗争。通过在其中导入适当的名称,
__init__.py可以使它们在包名称空间中可访问。通过删除模块名称,可以使它们不可访问。(有关为什么需要删除它们的信息,请参阅此问题)。这样一来,您可以通过以下方式接近所需的内容
__init__.py:
from another_class import doitfrom another_class import dataholderfrom descriptive_name import getSomeStufffrom descriptive_name import hold_more_datadel another_class, descriptive_name__all__ = ['doit', 'dataholder', 'getSomeStuff', 'hold_more_data']
但是,这将中断随后的尝试
importpackage.another_class。通常,您不能从中导入任何内容,
package.module而不
package.module能将其作为对该模块的可导入引用进行访问(尽管
__all__您可以使用阻塞
frompackage import module)。
更一般而言,通过按类/函数划分代码,您正在使用Python包/模块系统。Python模块通常应包含要作为一个单元导入的内容。为了方便起见,直接在顶级包名称空间中导入子模块组件并不少见,但是相反的做法是试图隐藏子模块并
仅 允许通过顶级包名称空间访问其内容,这将导致-
问题。另外,尝试“清理”模块的程序包名称空间没有任何好处。这些模块应该位于程序包名称空间中。那就是他们的归属。



