我有一个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

问题是,如果我只是查找顶级包的帮助,cf。
>>> help(mypkg)

然后子模块中的类和函数根本不会“自愿”出现(尽管它们的变量确实出现在DATA部分)。这是预期的/正确的行为,是否有绕过它的方法,以便用户不必只知道存在于实现/维护方便的子模块?

最佳答案

我知道的最好的解决方案就是将相关的文档对象(类、函数、数据)添加到__all__中。

关于python - 如何在__init__.py中使用import *将文档字符串带入包范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12736451/

10-09 08:49