只展示私有方法,使用Sphinx的Autodoc

3

这里有一些关于使用Autodoc显示私有方法的问题,但是我没有看到任何关于如何只显示私有方法的内容。

可以使用以下方式显示私有方法和普通方法:

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

然而,移除:members:会导致没有方法被显示出来。
那我如何只展示私有方法,并且仅针对这个指令呢?

将 :private-members: 添加进去会更有意义。 - G M
1个回答

2

找到了一种方法!

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

在conf.py中:

Original Answer翻译成:最初的回答

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需要决定是否在文档中包含成员(当指令的主题包含该成员时),就会调用此函数。该函数返回一个bool值,表示是否应跳过此成员。如果是True,则不会显示该成员。如果是False,则会显示该成员。如果是None,则忽略此函数的结果并调用下一个跳过检查方法。
如果指令包含选项:private-members:并且成员名称不以_开头(即它是公共方法),则会跳过该成员,并且不会出现在文档中。
因此,当我使用以下命令生成文档时:
.. autoclass:: my_package.my_file.MyClass
   :members:
   :private-members:

公共方法不显示,而私有方法则显示。
但是,我仍然需要设置“:members:”,否则这个检查甚至不会在第一次发生。如果我找到了一个需要列出公共和私有方法的地方,我就需要找到一些更复杂的检查方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接