【问题标题】:How to bring docstrings into package scope with import * in __init__.py?如何使用 __init__.py 中的 import * 将文档字符串带入包范围?
【发布时间】:2012-10-04 21:41:18
【问题描述】:

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

【问题讨论】:

    标签: python module documentation docstring


    【解决方案1】:

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

    【讨论】:

    • 为我工作:谢谢!不完全优雅而且有点不稳定,因为当将新函数或类添加到子模块时,这个列表需要更新并不明显......但至少它有效:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2014-09-08
    • 2014-08-04
    • 1970-01-01
    相关资源
    最近更新 更多