认为应用于包的..automodule :: 指令会自动将子模块记录为成员(通过与类、变量等进行比较)可能是一种误解。
我刚刚对此进行了测试,但无法使用:private-members: and or :special-members: 完成。不是通过在与包对应的.. automodule:: 指令中写入任何一个选项。 (尝试在autodoc_default_options 中设置这两个选项会得到相同的结果。)
以下包和模块布局示例:
C:.
│
└────your_package
│
│ public_module.py
│ _private_module.py
│ __init__.py
对包使用 .rst 和单个 .. automodule:::
Your package rst
================
.. automodule:: your_package
:members:
:undoc-members:
:private-members:
:special-members:
带有文档字符串的_private_module.py 的最小示例(public_module.py 与标题相同):
"""Private module docstring."""
class PublicClass:
"""Docstring."""
pass
确实给出了一个空文档:
但如果你从模块中删除下划线,你会得到完全相同的结果。
我试图避免通过脚本解析 package_name.rst 来添加它们
如果您使用sphinx-apidoc 生成.rst 文件,如果使用-P 标志:
-P, --private
包括“_private”模块。
1.2 版中的新功能。
生成的文件将包含一个用于私有模块的 .. automodule:: 指令,这确实具有包含 :private-members: 选项的副作用,如另一篇文章 "Include __main__.py in sphinx-apidoc generated files" 中所述。
明确包含.. automodule:: 指令的示例:
Your package rst
================
.. automodule:: your_package
:members:
:undoc-members:
.. automodule:: your_package.public_module
:members:
:undoc-members:
.. automodule:: your_package._private_module
:members:
:undoc-members:
结果: