2

这是我第一次使用 Sphinx,到目前为止我已经弄清楚了很多,但是我收到了一个特别的警告,我无法弄清楚它在告诉我什么。

根据http://www.sphinx-doc.org/en/stable/ext/autodoc.html上的文档,如果 special-members 标志,将包含Python “特殊”成员(即命名为special的那些)给出了选项:

.. autoclass:: my.Class
    :members:
    :private-members:
    :special-members:

将记录班级的“私人”和“特殊”成员。1.1 版中的新功能。 在 1.2 版更改: 该选项现在可以接受参数,即要记录的特殊成员。

我试图__init__在我的文档中列出一个类,但没有其他特殊成员,所以我的 .rst 文件是这样的:

**myClass Class**
==================

.. automodule:: python_module.submodule.series.myClass
    :members:

    .. autoclass:: myClass
        :members:
        :special-members: __init__

我收到错误“.rst:7: WARNING: missing attribute :special-members: init in object python_module.submodule.series.myClass.myClass

我使用的是 sphinx 版本 1.5.1,所以这不应该工作吗,因为我已经将我要记录的特殊成员的名称传递给它?该错误使我看起来好像从我的 .py 文件中丢失了一些东西,我从中提取了文档字符串。是这样吗?如果我想这样做,我找不到任何需要在方法中出现的特殊内容。

4

2 回答 2

1

请注意,如果你在谈论一个类,你应该使用:

.. autoclass:: MyClass
   :members:

   .. automethod:: __init__

如果您正在谈论包含您的类和其他内容的模块,请使用:

.. automodule:: mymodule
   :members:
   :special-members: __init__

请注意,这将记录在模块上找到的所有init方法。

如果您同时使用两者,那么您的 MyClass. init方法将被记录两次:

.. automodule:: mymodule
       :members:
       :special-members: __init__

.. autoclass:: MyClass
   :members:

   .. automethod:: __init__
于 2020-04-02T08:20:31.797 回答
0

我确实发现类文档字符串重复两次是因为 ..automodule 部分。我把它拿出来,它仍然包括整个类的定义,这让我很高兴。

我仍然无法__init__使用 :special-members: 选项来记录定义,但这是一个可以忽略不计的问题,因为该类已被充分记录。所以我想我只是让这个警告难倒我......现在。

于 2017-02-14T16:08:22.467 回答