sphinx autodoc-skip-member 处理程序:使用拿破仑时无法显示 __init__()

sphinx autodoc-skip-member handler: can't show __init__() when using napoleon

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

我正在关注 the accepted answer to this Whosebug 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__()

所以它似乎特定于 __init__()

这是一个已知问题吗,使用拿破仑时是否有另一种方法来控制它?

Napoleon 遵从您的 autodoc 配置,以了解您希望如何处理 __init__ 方法。

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

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