3

我有一个 Python 包,其中实现被分成(为了可维护性)两个内部子模块。但是,从用户的角度来看,包应该作为一个单元出现,因此在包的__init__.py两个子模块中都使用 导入import *,如下所示:

# 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部分中)。这是预期/正确的行为吗,有没有办法绕过它,以便用户不必知道仅为实现/维护方便而存在的子模块?

4

1 回答 1

1

我所知道的最佳解决方案就是将相关的文档化对象(类、函数、数据)添加到__all__您的__init__.py.

于 2012-10-04T22:28:34.807 回答