在Sphinx中使用Python文档字符串重写和扩展谓词

在Sphinx中使用Python文档字符串重写和扩展谓词,python,python-3.x,python-sphinx,docstring,Python,Python 3.x,Python Sphinx,Docstring,我正在使用Sphinx从文档字符串生成文档,文档字符串的格式为。据我所知,我应该使用动词“override”和“extend”来表示继承的方法是否被替换或调用 如果一个类是另一个类的子类,并且它的行为主要是从该类继承的,那么它的docstring应该提到这一点并总结其差异。使用动词“override”表示子类方法替换超类方法,并且不调用超类方法;使用动词“extend”表示子类方法调用超类方法(除了它自己的行为之外) 因为我是新手,所以我不清楚我应该如何在斯芬克斯格式中做到这一点。我是简单地使用

我正在使用Sphinx从文档字符串生成文档,文档字符串的格式为。据我所知,我应该使用动词“override”和“extend”来表示继承的方法是否被替换或调用

如果一个类是另一个类的子类,并且它的行为主要是从该类继承的,那么它的docstring应该提到这一点并总结其差异。使用动词“override”表示子类方法替换超类方法,并且不调用超类方法;使用动词“extend”表示子类方法调用超类方法(除了它自己的行为之外)

因为我是新手,所以我不清楚我应该如何在斯芬克斯格式中做到这一点。我是简单地使用描述中的一个词,还是有一个像
:return:
这样的键需要我应用?这个指令是在子类级别给出的,是动词去了哪里,还是我也要将它们添加到各个方法中

A类:
“”“这是我的基类。”“”
def方法_a(自身):
“”“我的基本方法a.”
通过
def方法_b(自身):
“我的基本方法b.”
通过
B(A)类:
“”“这是继承自:class:A的子类。”
def方法_a(自身):
“”“此方法将替换继承的方法。”“”
打印(“覆盖”)
def方法_b(自身):
“”“此方法调用继承的方法。”“”
super(B,self).method_B()
打印(“扩展”)

类B及其方法的一组简单但正确的docstring看起来像什么?

Python文档中的一个例子是集合。它只覆盖了字典中的一种方法(
\uuuuuuuuuuuuuuuuuuuuuuuuuu(键)
方法)

defaultdict是内置dict类的一个子类。它重写一个方法(…)其余的功能与dict类相同,此处不作说明。(…)所有剩余的参数都被视为与传递给dict构造函数的参数相同,包括关键字参数

文档以散文的形式明确说明了这一点,文档记录了重写的方法,并解释了超类和子类构造函数签名之间的参数差异

我是简单地使用我描述中的一个词,还是这是一个类似于:return:我需要申请的关键字

你称之为“钥匙”的东西实际上叫做钥匙。没有特定的“docstring节”来表示“覆盖”或“扩展”,因为这是隐式的。如果子类定义的方法与其超类的方法具有完全相同的名称,则该方法必须重写或扩展

总之,您会惊讶地知道您的文档实际上是正确的。最多可以口头添加“覆盖”和“扩展”以及对超类方法的交叉引用,如下所示:

B(A)类:
“”“方法a和方法b都不是继承的。”。
这两个方法都在此类中重新定义。
"""
def方法_a(自身):
“”“此方法重写:meth:`A.method\u A”“。”
打印(“覆盖”)
def方法_b(自身):
“”“此方法扩展了:meth:`A.method\u b”“。”
super().方法_b()
打印(“扩展”)
下面的答案显示,您的示例在签名中缺少参数