【问题标题】:sphinx autodoc-skip-member handler: can't show __init__() when using napoleonsphinx autodoc-skip-member 处理程序:使用拿破仑时无法显示 __init__()
【发布时间】:2016-07-16 04:27:14
【问题描述】:

我想在我的 sphinx 生成的文档中包含 __init__() 的文档字符串。

我正在关注the accepted answer to this stackoverflow questionautodoc-skip-member 添加处理程序,但仍然无法看到我的__init__() 文档。 if name == "__init__": 块内的跟踪代码显示我正在点击该代码。

凭直觉,我从我的extensions 定义中删除了'sphinx.ext.napoleon',离开了

extensions = [
    'sphinx.ext.autodoc',
    # 'sphinx.ext.napoleon',
]

然后我可以看到__init__() 文档。

我在the napoleon documentation 中看到的唯一似乎相关的是napoleon_include_special_with_doc,它说默认为True。在conf.py 中将其显式设置为True 似乎没有任何改变。

ETA:如果我添加以下方法:

def __blah__(self):
    '''blah blah blah'''
    print self.__class__

我在生成的文档中看到了__blah__()

  • 如果我将__blah__ 的名称更改为__repr____str__, 我在生成的文档中看到了它们。
  • 如果我注释掉现有的__init__ 并更改 __blah____init__ 我没看到。

所以它似乎特定于__init__()

这是一个已知问题吗?在使用拿破仑时还有其他方法可以控制吗?

【问题讨论】:

    标签: python python-sphinx sphinx-napoleon


    【解决方案1】:

    根据 Rob 在https://github.com/sphinx-doc/sphinx/issues/2374 的后续操作,如果您使用的任何扩展程序还为“autodoc-skip-member”事件设置了处理程序,则只会使用其中一个处理程序。这似乎是手头的问题。谢谢罗!

    【讨论】:

      【解决方案2】:

      Napoleon 会根据您的 autodoc 配置来决定您希望如何处理 __init__ 方法。

      检查conf.py 中的自动文档设置。特别是,确保将autoclass_content 设置为initboth

      【讨论】:

      • 感谢您的快速回复,Rob。我很确定 autoclass_content 没有区别。我试图做的是将类文档放在类下,然后让 __init__() 显示为方法,就像 __repr__() 或 __str__() 或任何其他方法一样,并带有自己的文档。 autoclass_content = 'both' 只是将 __init__() 文档添加到类文档中,而不将 __init__() 作为单独的函数调用。 autoclass_content = 'init' 使用 __init__() 文档作为整个类文档,也省略了 __init__() 作为单独的函数。
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多