关于返回对象类型的Python docstring

关于返回对象类型的Python docstring,python,docstring,Python,Docstring,如果从派生类调用get\u new\u foo,则它将返回派生类的实例。如果多个类使用Foo作为基类,那么get\u new\u Foo将返回从中调用它的派生类的实例 我想记录什么类型的对象get\u new\u foo返回,但我不知道如何记录它。我不能说返回Foo的实例,因为情况并非总是如此。您可以在docstring中提供类型提示 由于您是在一个类上编写文档的,而该类将是其他类的超类,因此您可以编写它返回的基类型的文档。即使基类继承后将返回的实际类型,结果仍然是基类的实例,并且在这个级别上,

如果从派生类调用
get\u new\u foo
,则它将返回派生类的实例。如果多个类使用
Foo
作为基类,那么
get\u new\u Foo
将返回从中调用它的派生类的实例


我想记录什么类型的对象
get\u new\u foo
返回,但我不知道如何记录它。我不能说
返回Foo的实例,因为情况并非总是如此。

您可以在docstring中提供类型提示

由于您是在一个类上编写文档的,而该类将是其他类的超类,因此您可以编写它返回的基类型的文档。即使基类继承后将返回的实际类型,结果仍然是基类的实例,并且在这个级别上,您不能记录除此之外的任何内容


如果您觉得子类对于返回的任何内容都需要更具体的文档,您只需在那里提供文档即可。

就我个人而言,我不会过分担心这一点。因为任何子类“is-a”
Foo
无论如何,在你选择的措辞中,最坏的情况是有点误导。如果你想学究般地正确,你可以将它扩展为“返回一个Foo实例(在子类实例上调用Foo子类)”。

我要注意,
返回一个新的Foo
在技术上是准确的,因为所有子类都应该遵守“is-a”规则;也就是说,它可能没有准确地返回
Foo
,但它返回的仍然是
Foo
@wim:尽管它正在构建实例属性;
@classmethod
可以工作(要求调用方也显式地传递现有的
),但在这种情况下,调用类本身似乎不是一个有意义的替代构造函数。@ShadowRanger啊,没错。奇怪的代码,如果没有更多的上下文,很难提供一个不那么奇怪的替代方案。我问题中的示例肯定是
@classmethod
候选,但我的实际代码与示例有很大不同。我不能
@classmethod
,否则我会这样做。@wim问题很简单,就是,如何记录这样一个方法返回的对象类型。不要担心代码,这只是一个示例,我不认为它需要更多的上下文。
class Foo:
    def __init__(self, bar):
        self.bar = bar

    def get_new_foo(self, new_bar):
        return type(self)([self.bar, new_bar]) #How should it be documented?