我正在用 Python 编写一个具有以下模块结构的小包
package/
__init__.py
cls1.py
cls2.py
cls3.py
mod1.py
mod2.py
其中每个clsN.py
都有一个类ClsN
,并且每个都modN.py
包含使用这些类的各种功能。我希望我的导入结构看起来像
package
package.Cls1
package.Cls2
package.Cls3
package.mod1
package.mod1.func1
...
package.mod2
package.mod2.func2
...
不污染命名空间。现在我遇到的问题是我可以通过package.Cls1
and访问这些类中的任何一个package.cls1.Cls1
,并且我还可以访问在package/cls1.py
(包括导入)中定义的所有内容。我试过设置__all__
变量,但除了在from package import *
. 有没有办法让 Python 不显示clsN
为子模块?甚至只是一种在这些文件中隐藏导入的方法?我不希望我图书馆的用户有两种进入每个班级的方式。