2012-10-04 70 views
2

我有一個Python包,其中的實現被拆分(維護)到兩個內部子模塊中。從用戶的角度來看的包應顯示爲一個單位,雖然如此,在封裝的__init__.py兩個子模塊與import *進口的,如下:如何使用__init__.py中的導入*將文檔字符串導入包範圍中?

# filesystem layout: 
mypkg/ 
    __init__.py 
    subA.py # defines class A 
    subB.py # defines class B 

# __init__.py 
from .subA import * 
from .subB import * 

這工作按預期從包功能的角度來看:

>>> import mypkg 
>>> a = mypkg.A() # works 
>>> b = mypkg.B() # works 

如果直接查找這些類的內聯幫助,一切都是還不錯:

>>> help(mypkg.A) # works 
>>> help(mypkg.subA.A) # also works 

問題是,如果我只是查找頂層包的幫助,

>>> help(mypkg) 

然後從子模塊類和函數不「自願」出現在所有的(雖然從他們的變量會出現在DATA部分)。這是預期的/正確的行爲,是否有繞過它的方法,以便用戶不必知道僅存在實現/維護方便的子模塊?

回答

1

我所知道的最佳解決方案就是在__init__.py中將相關文檔對象(類,函數,數據)添加到__all__

+0

適合我:謝謝!不完全優雅和有點片狀,因爲這是不明顯的,當一個新的功能或類被添加到子模塊時,此列表需要更新...但至少它工作:) – andybuckley

相關問題