10

我有一个像这样的三层类结构:

class Super(object):
    """This class is documented."""

class Intermediate(Super):
    pass

class Sub(Intermediate):
    """This is also documented."""

我的index.rst文件如下所示:

.. automodule:: mymodule
   :show-inheritance:
   :inherited-members:

Sphinx 为我生成了一个很好的 API 文档。它包括类SuperSub,并带有适当的注释。它不包括Intermediate,因为它没有评论并且我没有提供undoc-members标志。这是因为我不想Intermediate出现在文档中。

我的问题是:因为我提供了show-inheritance标志,所以 Sphinx 会显示每个类的基础;objectSuperIntermediateSub。由于Intermediate没有记录,我不希望它出现在基类列表中。相反,我希望 Sphinx 在继承树中显示下一个记录的类,Super. 换句话说:我希望 Sphinx 显示Super,而不是Intermediate作为Sub.

有人知道怎么做这个吗?

4

1 回答 1

1

对于这种特殊情况,您想“隐藏”类继承,您可以使用autoclass记录每个可见类而不是记录整个模块。

例如:

.. currentmodule:: demo

.. autoclass:: Super
   :members:

.. autoclass:: Sub
   :members:

然后你可以添加:show-inheritance:标志来显示你想要的类的继承。

引用文档:

automodule、autoclass 和 autoexception 指令还支持称为 show-inheritance 的标志选项。当给定时,基类列表将被插入到类签名的正下方(当与 automodule 一起使用时,这将被插入到模块中记录的每个类)。

于 2019-02-14T17:54:41.903 回答