2012-10-04 6 views
2

필자는 구현이 두 개의 내부 서브 모듈로 분할 된 (유지 관리를 위해) 파이썬 패키지를 가지고 있습니다.__init__.py에서 import *를 사용하여 docstrings을 패키지 범위로 가져 오는 방법은 무엇입니까?

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

이 의도 한대로 작동

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

을 : import *로 가져 패키지의 __init__.py 모두 서브 모듈의 있도록 다음과 같이보기의 사용자 관점에서 패키지는,하지만 하나 개의 단위로 표시한다 보기의 패키지 기능의 관점에서 :

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

그리고 만약

직접 이러한 클래스에 대한 인라인 도움말을, 모든 것이 찾는 또한 좋다 :

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

문제는 내가 최상위 패키지에 대한 도움말을 찾으면, cf.

>>> help(mypkg) 

는 서브 모듈에서 클래스와 함수는 (그들로부터 변수는 DATA 섹션에 나타 않지만) 전혀 나타나지 "자발적으로"않습니다. 이 예상/올바른 동작이며 사용자가 구현/유지 관리 편의를 위해서만 존재하는 서브 모듈에 대해 알 필요가 없도록이를 우회 할 수있는 방법이 있습니까?

답변

1

가장 좋은 해결책은 관련 문서화 된 개체 (클래스, 함수, 데이터)를 __init__.py__all__에 추가하는 것입니다.

+0

나를위한 작품 : 감사합니다! 새로운 기능이나 클래스가 서브 모듈에 추가되었을 때이 목록을 업데이트해야한다는 것은 분명하지 않기 때문에 정확하지는 않지만 약간은 색다른 것입니다.하지만 적어도 작동합니다 :) – andybuckley

관련 문제