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

时间:2013-06-22 20:10:10

标签: python python-2.7 python-sphinx

我有一个三层的类结构:

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标志。这是因为我不希望{1}}显示在文档中。

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

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

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

例如:

.. currentmodule:: demo

.. autoclass:: Super
   :members:

.. autoclass:: Sub
   :members:

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

引用文档:

  

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