暴露一些Python类而不耦合到文件结构

时间:2013-07-31 18:32:38

标签: python python-2.7

我的项目由几个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()

我不喜欢这样做有两个原因:

  1. 我不希望我的代码的客户端必须知道和关心我用来分发类的文件。如果我更改文件,我不想破坏客户
  2. 我更愿意只将某些类暴露给项目之外 - 而不是所有类

1 个答案:

答案 0 :(得分:2)

__init__.py放入projname/,其中包含以下内容:

from .a import A1, A2
from .b import B1, B2, B3
from .c import C

这会将projname转换为一个包,其名称空间包含__init__.py包含的任何内容,在本例中为A1A2B1B2B3C