有没有自动显示变量var1和var2及其初始值在Sphinx文档中的方法?
class MyClass:
"""
Description for class
"""
def __init__(self, par1, par2):
self.var1 = par1 * 2
self.var2 = par2 * 2
def method(self):
pass
有没有自动显示变量var1和var2及其初始值在Sphinx文档中的方法?
class MyClass:
"""
Description for class
"""
def __init__(self, par1, par2):
self.var1 = par1 * 2
self.var2 = par2 * 2
def method(self):
pass
你的变量是实例变量,而不是类变量。
如果没有将文档字符串(或#:
“文档注释”)附加到变量上,则它们将不会被记录。你可以按照以下方式操作:
class MyClass(object):
"""
Description for class
"""
def __init__(self, par1, par2):
self.var1 = par1 #: initial value: par1
self.var2 = par2 #: initial value: par2
def method(self):
pass
但是我更喜欢使用信息域来包含变量文档:
class MyClass(object):
"""
Description for class
:ivar var1: initial value: par1
:ivar var2: initial value: par2
"""
def __init__(self, par1, par2):
self.var1 = par1
self.var2 = par2
def method(self):
pass
另请参见:
dataclass
风格类,您可以这样做:@dataclass
class MyClass:
#: Nice vars!
var1: int = 0
#: Life is beautiful, remember to buy flowers for your wife
var2: int = 0
var1: int = 0
。 - rv.kvetch文档注释:你也可以将文档注释放在上面
除了使用 self.var1 = par1#var1的文档
语法之外,您还可以:
main.py
class MyOtherClass:
"""
This class does that.
"""
pass
class MyClass:
"""
Description for class.
"""
#: Syntax also works for class variables.
class_var: int = 1
def __init__(self, par1: int, par2: MyOtherClass):
#: Doc for var1
self.var1: int = par1
#: Doc for var2.
#: Another line!
self.var2: MyOtherClass = par2
def method(self):
"""
My favorite method.
"""
pass
@classmethod
def cmethod():
"""
My favorite class method.
"""
pass
build.sh
sphinx-build . out
conf.py
import os
import sys
sys.path.insert(0, os.path.abspath('.'))
extensions = [ 'sphinx.ext.autodoc' ]
autodoc_default_options = {
'members': True,
}
autodoc_typehints = "description"
index.rst
.. automodule:: main
requirements.txt
Sphinx==6.1.3
./build.sh
之后,out/index.html
下的输出如下:
#:
语法的文档在此处:https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#directive-autoproperty
改用 :ivar:
和:cvar:
目前两种方法之间存在权衡,可惜没有一种明显优越的方法。
缺点:
优点:
两种方法都可以更好:
class_var
是类变量?待办:链接特性请求class MyClass:
"""
Description for class.
:ivar var1: Doc for var1
:ivar var2: Doc for var2.
Another line!
:cvar class_var: Syntax also works for class variables.
"""
class_var: int
def __init__(self, par1: int, par2: MyOtherClass):
self.var1: int = par1
self.var2: MyOtherClass = par2
def method(self):
"""
My favorite method.
"""
pass
@classmethod
def cmethod():
"""
My favorite class method.
"""
pass
产生:
相关:Python Sphinx中var、cvar和ivar的区别是什么?
在Python 3.10、Ubuntu 22.10上进行了测试。
:ivar foo:
,只需要用:var foo
就可以了。 - RayLuoivar
表示实例变量,cvar
表示类变量,而var
则需要自己理解。虽然Sphinx不关心这些,但它会告知人类读者。 - c z