首页 > 解决方案 > Python:如何在包级帮助菜单中嵌入所有文档字符串帮助?

问题描述

我想问的是:

通常包级帮助不包括所有底层文档字符串,但有时会包含.

我想确保我嵌入了所有底层文档字符串。


例如,在numpy中,所有底层文档字符串都可以在命令提示符的帮助中找到,即使它们没有在顶层提供__init__.py

即,我可以输入

>>> help(numpy)

并查看所有文档,包括在 dunder init 模块之外定义的文档。

但是,许多其他包,包括像pandas这样的流行包,并没有捕获所有底层文档。

即,打字

>>> help(pandas)

仅向我提供__init__.py.

我想创建包级别的文档来反映numpy它是如何做到的。


我试图numpy查看它是如何执行这种魔法的,但没有运气。我已经执行了谷歌搜索,但似乎没有办法表达这个问题并获得任何体面的链接。

标签: pythonnumpypackagedocstringcode-documentation

解决方案


numpy__init__.py向您显示有关在模块外部定义的类和函数的文档,因为它们的名称添加__all____init__.py. 尝试评论第 169-173 行(不要忘记取消评论!):

#__all__.extend(['__version__', 'show_config'])
#__all__.extend(core.__all__)
#__all__.extend(_mat.__all__)
#__all__.extend(lib.__all__)
#__all__.extend(['linalg', 'fft', 'random', 'ctypeslib', 'ma'])

做完这个输出help(numpy)会很有限。

也让我们重现这种行为。从 开始'/some/path',创建文件夹folder,在其中命名的文件file.py具有以下内容:

class Class:
    """Class docstring"""

并且__init__.py

from .file import *

现在让我们看看帮助:

/some/path$ python3.5
>>> import folder
>>> help(folder)

Help on package folder:

NAME
    folder

PACKAGE CONTENTS
    file

FILE
    /some/path/folder/__init__.py

现在将此行添加到__init__.py

__all__ = ['Class']

重新导入后folder,该命令help(folder)将包含有关class Class哪些包含您的文档字符串的信息:

Help on package folder:

NAME
    folder

PACKAGE CONTENTS
    file

CLASSES
    builtins.object
        folder.file.Class

    class Class(builtins.object)
     |  Class docstring
     |  
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)

DATA
    __all__ = ['Class']

FILE
    /some/path/folder/__init__.py

推荐阅读