gpt4 book ai didi

python - Sphinx 是否应该能够记录类中的实例属性?

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:22 25 4
gpt4 key购买 nike

我发现了相互矛盾且经常过时的信息,因此希望有人能够解决这个问题。

我想使用 Sphinx 记录类似的内容:

class MyClass:
"""
MyClass, which is documented with a docstring at the class level
"""
classVar = None
"""A class var with an initial value and a 1-line doc"""

def __init__(self):
"""
__init__'s docs
"""
instanceVar1 = 10
"""An instance var with an initial val and 1-line doc"""

#: An instance var with an initial val and a doc-comment
instanceVar2 = 10

在我的文档中,我希望看到 instanceVar1 及其文档字符串(最好是其默认值,但我只对描述感到满意)。但是如果我运行第一个文件:

.. automodule:: mymodule.mycode
:members:

我只看到类属性,看不到实例属性: Image showing docs

谷歌搜索给了我关于什么应该/不应该起作用的相互矛盾的信息。几个较旧的堆栈溢出链引用了实例属性的自动文档化问题(例如 here ),但它们也提到如果您像我上面所做的那样添加了文档字符串,那么它就可以工作。 Sphinx 文档引用 all attributes can be autodocumented

任何人都可以评论我正在尝试做的事情是否应该有效/现在对他们有效/对我可能搞砸的事情提出建议吗?谢谢。

最佳答案

是的,你所做的应该有效,而且它最终对我有效。

为了进行演示,我使用您引用的 Sphinx 文档中的示例:

class Foo:
"""Docstring for class Foo."""

#: Doc comment for class attribute Foo.bar.
#: It can have multiple lines.
bar = 1

flox = 1.5 #: Doc comment for Foo.flox. One line only.

baz = 2
"""Docstring for class attribute Foo.baz."""

def __init__(self):
#: Doc comment for instance attribute qux.
self.qux = 3

self.spam = 4
"""Docstring for instance attribute spam."""

我将其保存为 module.py并创建了以下index.rst :

.. automodule:: module

连同此 Sphinx 配置文件,conf.py :

import sys
sys.path.insert(0, '.')
extensions = ['sphinx.ext.autodoc']
autodoc_default_options = {
'members': True,
'member-order': 'bysource',
'special-members': '__init__',
}

将所有三个文件存储在同一文件夹中,我通过 sphinx-build . ./html 运行 Sphinx (2.1.1) (在 Python 3.7.3 和 Windows 10 上)将其呈现为 HTML: rendered HTML

至于你“可能搞砸了”……嗯,说得很充分,我相信你会同意的。 ;-) 我花了很长时间才意识到这一点,首先,我尝试了与上面相同的方法,但是使用了您提供的代码示例:您的两个所谓的实例属性,instanceVar1instanceVar2 ,缺少 self前面的标识符。哎呀。这就是它不起作用的原因。

关于python - Sphinx 是否应该能够记录类中的实例属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com