我的项目由几个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所包含的内容,在本例中为A1A2B1B2B3C

10-04 11:45