仅显示Sphinx Autodoc的私有方法

时间:2019-08-22 13:17:23

标签: python-sphinx autodoc

这里有几个有关使用Autodoc显示私有方法的问题,但我还没有看到有关仅显示 私有方法的信息。

私有方法和常规方法可以显示如下:

.. autoclass:: my_package.my_file.MyClass
   :members:
   :private-members:

但是,删除:members:不会显示所有方法。

我如何仅显示私有方法以及仅针对该指令?

1 个答案:

答案 0 :(得分:0)

找到了办法!

使用此处详细介绍的Skipping Members设置,我能够定义一个规则来有选择地跳过成员。

在conf.py中:

def hide_non_private(app, what, name, obj, skip, options):
    # if private-members is set, show only private members
    if 'private-members' in options and not name.startswith('_'):
        # skip public methods
        return True
    else:
        # do not modify skip - private methods will be shown
        return None

def setup(app):
    app.connect('autodoc-skip-member', hide_non_private)

每当autodoc必须决定是否在文档中包括成员(只要指令的主题包含该成员时,它就会这样做),就会调用此函数。该函数返回一个布尔值,表示是否应跳过此成员。如果为True,则不会出现。如果为False,则为。如果为None,则此函数的结果将被忽略,并调用下一个跳过检查方法。

如果指令包含选项:private-members:并且成员名称不是以_开头(即,这是一个公共方法),则会被跳过,并且不会出现在文档中。

因此,当我使用以下方法生成文档时:

.. autoclass:: my_package.my_file.MyClass
   :members:
   :private-members:

未显示公共方法,而显示了私有方法。

尽管如此,我仍然需要设置:members:,否则首先不会进行此检查。如果我发现确实需要列出公共方法和私有方法的地方,则需要找到一些更复杂的检查。