2013-05-07 119 views
1

我正在尝试创建一个包含几个类的包(mypackage),但希望包含在多个文件中的类。如何创建一个包含多个文件的Python包但不包含子包

例如,我想class_a.py包含一个名为ClassA的

一类,等等。因此,我想下面的文件结构:

.../mypackage 
     __init__.py 
     class_a.py 
     class_b.py 
     ... 

不过,我想负载和使用包如下:

load mypackage 
a = mypackage.ClassA() 

什么我需要做的(我在__init__.py承担)文件,使之成为可能。目前,它使用“mypackage.class_a.ClassA()”进行操作?

回答

1

让您的__init__.py从其他文件导入您所有的ClassAClassB等。

然后您将能够import mypackage并使用mypackage.ClassAfrom mypackage import ClassA并使用它作为不合格的ClassA

有点背景。

import foo语句查找foo.py,然后查找foo/__init__.py,并将该文件中定义的名称加载到当前名称空间中。把你需要的任何东西放在__init__.py的“顶级”。

另外,take a look at __all__ top-level variable如果您倾向于from mypackage import *

+1

或者更好的是,从来没有使用'从mypackage的进口*',以往,在任何情况下。 – 2013-05-07 18:08:14

0

在你__init__.py,补充一点:

from class_a import ClassA 
from class_b import ClassB 

del class_a 
del class_b 
+0

真的名'class_a'不会被定义,'del'会失败。 – 9000 2013-05-07 17:58:16

相关问题