Sphinx autodoc show-inheritance:如何跳过无证的中间基础?

问题描述 投票:9回答:1

我有一个三层的类结构,如下所示:

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的基类。

有人知道怎么做这个吗?

python python-2.7 python-sphinx
1个回答
1
投票

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

例如:

.. currentmodule:: demo

.. autoclass:: Super
   :members:

.. autoclass:: Sub
   :members:

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

引用文档:

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

© www.soinside.com 2019 - 2024. All rights reserved.