如何使用Sphinx autodoc记录单个私有属性?

时间:2019-01-31 18:00:00

标签: python python-sphinx autodoc

我正在使用sphinx和autodoc扩展名从python模块中的文档字符串自动生成文档。

我目前使用automodule指令来记录模块的所有公共成员

.. automodule::
    :members:

我的模块还具有许多私有属性。我想在文档中包括其中之一。

是否可以告诉automodule记录所有公共成员以及该私人成员的文件?我尝试使用:private-members:选项,但这包括所有私人成员。我也尝试过手动指定private属性,但是它没有记录任何公共成员。

.. automodule::
    :members: _PRIVATE_ATTR

我想避免只为添加此私人成员而手动列出每个公共成员的情况。

是否可以通过autodoc做到这一点?

1 个答案:

答案 0 :(得分:2)

这是我期望的工作(使用Sphinx 1.8.3测试):

.. automodule:: yourmodule
   :members:
   :private-members: _PRIVATE_ATTR

但是效果不佳。如果给出了:private-members:选项(带或不带参数),则将包括所有私有成员(前提是它们具有文档字符串)。

:special-members:带参数,所以:private-members:没有带参数很奇怪。

您可以使用autodata

.. automodule:: yourmodule
   :members:

.. autodata:: yourmodule._PRIVATE_ATTR

这里是autodata在“ automodule里面”的替代选项:

.. automodule:: yourmodule
   :members:

   .. autodata:: _PRIVATE_ATTR

还有一个autoattribute指令,但不适用于模块级“数据成员”。我发现autoattribute可以用于记录私有的 class属性,但是the documentation尚不清楚autodataautoattribute之间的确切区别