【问题标题】:How to show private-members separately?如何分别显示私人成员?
【发布时间】:2021-08-17 12:29:35
【问题描述】:

目前,我将模块描述为:


.. autoclass:: package.module.class
   :members:
   :undoc-members:
   :show-inheritance:
   :private-members:
   :member-order: bysource

它会连续显示所有成员。我想做一些事情:


.. autoclass:: package.module.class
   :members:
   :undoc-members:
   :show-inheritance:
   :member-order: bysource

Private methods
===============

.. autoclass:: package.module.class
   :noindex:
   :private-members:
   :member-order: bysource

因此我不得不使用:noindex:

警告:package.module 的重复对象描述,类中的其他实例,使用 :noindex: 作为其中之一

但如果没有:members:,似乎:private-members: 不会显示。除了类对象文档字符串之外,此代码不会显示任何内容:

.. automodule:: package.module.class
   :noindex:
   :private-members:
   :member-order: bysource

而且这些东西会显示所有的类方法:

.. automodule:: package.module.class
   :noindex:
   :members:
   :private-members:
   :member-order: bysource

如何在不显示其他内容的情况下显示私人成员?

【问题讨论】:

  • 以防万一——当你尝试做你已经做过的事情时会遇到什么错误?
  • @user202729 抱歉,“警告:package.module 的重复对象描述,模块中的其他实例,使用 :noindex: 其中之一”
  • 嗯,这只是一个警告而不是错误。 (阅读 noindex 的文档以了解它的作用)否则它仍然可以正常工作吗?
  • 不,在其中一个中添加:noindex: 后——它不会出现在生成的文档中。但是,正如我所知道的,仅仅因为:private-members: 没有:members: 就不会显示
  • 呵呵,看来你发现了问题所在。见Showing only private methods with Sphinx' Autodoc - Stack Overflow

标签: python python-sphinx autodoc


【解决方案1】:

这并不能直接回答您的问题,但我编写了一个名为 autoclasstoc 的 Sphinx 插件,其确切目的是在类文档中直观地分离公共和私有方法。该插件的基本思想是创建一个指向类的所有属性的链接列表,组织成公共/私有、属性/方法、继承自 等部分。每个属性的详细文档保留在按字母顺序排列,但有组织的列表使班级的结构清晰。

这是您将用于此插件的语法示例。这只是对您已有的内容的一行补充:

.. autoclass:: package.module.class
     :members:
     :undoc-members:
     :show-inheritance:
     :private-members:
     :member-order: bysource

     .. autoclasstoc::

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多