Python 为什么不是';t斯芬克斯显示继承成员?
我有一个基类Python 为什么不是';t斯芬克斯显示继承成员?,python,python-sphinx,autodoc,Python,Python Sphinx,Autodoc,我有一个基类base和一个派生类derived。使用Sphinx,我希望Base的类属性出现在Derived的文档中;我原以为:继承成员:就可以了,但到目前为止我运气不好 请注意,与之不同的是,我需要记录的成员在类中不显示为硬编码,仅在类docstring中显示 最简单的工作示例:在tmp/下,我有一个文件a.py: class Base: """ :param x: X :type x: int """
base
和一个派生类derived
。使用Sphinx,我希望Base
的类属性出现在Derived
的文档中;我原以为:继承成员:
就可以了,但到目前为止我运气不好
请注意,与之不同的是,我需要记录的成员在类中不显示为硬编码,仅在类docstring中显示
最简单的工作示例:在tmp/
下,我有一个文件a.py
:
class Base:
"""
:param x: X
:type x: int
"""
x = 1
class Derived(Base):
"""
:param y: Y
:type y: int
"""
y = 2
文件index.rst
:
Tmp
===
.. autoclass:: tmp.a.Base
:members:
.. autoclass:: tmp.a.Derived
:show-inheritance:
:inherited-members:
:members:
和conf.py
,它只包含extensions=['sphinx.ext.autodoc']
。如果我运行命令
python -m sphinx.cmd.build . ./tmphtml/
然后输出tmphtml/index.html
显示:
如何使
x
显示在导出的部分的参数下?我目前的Sphinx版本是3.3.1。我认为这可能是Sphinx中的一个错误,但您的示例中也有一个错误
您的错误是没有正确记录x
或y
类属性。:param:
角色用于描述函数参数,因此Sphinx不会将x
和y
参数与同名的类属性相关联。因为Sphinx认为类属性没有文档化,所以它没有将它们包含在文档中。以下是应如何记录属性:
类库:
x=1
“垃圾邮件”
派生类(基):
y=2
“鸡蛋”
(可能的)错误是,即使这样做,Sphinx仍然认为属性未记录。我认为这可能是属性没有真正的docstring的结果,这迫使Sphinx在幕后做了一些技巧,使其看起来像是真的,但我不是很确定。在任何情况下,都可以通过在中包含:undoc成员:
来解决此行为。。自动类::
指令。这当然会包括文档中所有未记录的方法/属性,但我无法找到解决方法
另一个值得一提的是我写的一个插件,名为。这基本上是一种简单的方法,可以让衍生的
文档包含指向x
和y
文档的链接。y
文档实际上会在同一页上,因为它是派生的
类的一部分,而x
文档会在Base
页上。每个方法(包括继承的方法)都有组织良好的链接。这并不能完全回答你的问题,但我认为它得到了相同的想法。这个例子看起来“太小了”。没有方法、类属性和实例属性。在类docstring中包含:param:
意味着什么?我认为您需要提供一个更现实的示例,说明具有实际成员的类。@mzjn已编辑(添加了类属性)。同样的结果看起来仍然很奇怪。x和y不是参数;它们是类属性/变量。@mzjn编辑了问题以反映这一点。这就是我拥有的用例,如果这不可能,并且不在路线图上,我很乐意接受这样的答案