我的项目由几个Python类组成,分为几个文件。
projname/
a.py # Has classes A1 and A2
b.py # Has classes B1 B2 B3
c.py # Has class C
test/
doc/
bin/
我希望能够公开这些类中的某些(或全部)类,以便从我的
bin
目录或另一个Python脚本中执行以下操作:import projname
...
myvar = projname.A1()
我不知道该怎么做。到目前为止,我能做的最好的事情是:
import projname.a
import projname.b
import projname.c
myvar = projname.a.A1()
我不喜欢这样做有两个原因:
我不希望我的代码的客户必须知道和关心我用来分发类的文件。如果我更改文件,我不想破坏客户
我只想将某些类公开给项目之外的人,而不是全部
最佳答案
将具有以下内容的__init__.py
放入projname/
:
from .a import A1, A2
from .b import B1, B2, B3
from .c import C
这会将
projname
转换为包,其名称空间包含__init__.py
所包含的内容,在本例中为A1
,A2
,B1
,B2
,B3
和C
。