Mik*_*son 6 python numpy docstring package code-documentation
我的意思是:
__init__.py文件和所有正确的文档字符串(模块,函数,类和方法级文档字符串)。但是,当我执行时help(mypackage),提供的唯一帮助是该顶级__init__.py模块提供的帮助。通常,包级的帮助并不包括所有基础文档字符串的,但有时它。
我想确保我嵌入了所有基础文档字符串。
例如,在numpy软件包中,即使未在顶级提供,所有基本文档字符串也可在命令提示符的帮助中找到__init__.py。
即我可以输入
>>> help(numpy)
Run Code Online (Sandbox Code Playgroud)
并查看所有文档,包括在dunder init模块外部定义的文档。
但是,许多其他软件包,包括诸如pandas软件包之类的流行软件包,并未捕获所有基础文档。
即输入
>>> help(pandas)
Run Code Online (Sandbox Code Playgroud)
仅向我提供中定义的文档__init__.py。
我想创建镜像的软件包级文档numpy。
我试着numpy浏览一下它是如何执行此魔术的,没有运气。我已经执行过Google搜索,但似乎无法用短语表达此问题并获得任何正当的链接。
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'])
Run Code Online (Sandbox Code Playgroud)
这样做之后的输出help(numpy)将非常有限。
还让我们重现此行为。从开始'/some/path',创建文件夹folder,file.py其中包含以下内容的文件:
class Class:
"""Class docstring"""
Run Code Online (Sandbox Code Playgroud)
和__init__.py:
from .file import *
Run Code Online (Sandbox Code Playgroud)
现在让我们来看一下帮助:
/some/path$ python3.5
>>> import folder
>>> help(folder)
Help on package folder:
NAME
folder
PACKAGE CONTENTS
file
FILE
/some/path/folder/__init__.py
Run Code Online (Sandbox Code Playgroud)
现在将此行添加到__init__.py:
__all__ = ['Class']
Run Code Online (Sandbox Code Playgroud)
重新导入后,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
Run Code Online (Sandbox Code Playgroud)