【问题标题】:Showing only private methods with Sphinx' Autodoc使用 Sphinx 的 Autodoc 仅显示私有方法
【发布时间】:2019-08-22 13:17:23
【问题描述】:

这里有几个关于使用 Autodoc 显示私有方法的问题,但我没有看到任何关于显示私有方法的内容。

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

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

但是,删除 :members: 会导致 没有 方法显示。

我怎样才能只显示私有方法,并且只显示这个指令?

【问题讨论】:

    标签: python-sphinx autodoc


    【解决方案1】:

    找到方法了!

    使用此处详述的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:,否则这个检查根本不会发生。如果我发现我确实需要列出公共和私有方法的地方,我需要找到一些更复杂的检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 2016-07-16
      • 2011-08-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多