2013-05-07 120 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

相關問題