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编辑了问题以反映这一点。这就是我拥有的用例,如果这不可能,并且不在路线图上,我很乐意接受这样的答案