Python“请参阅help(type(self))获得准确的签名。”

时间:2019-01-09 16:18:06

标签: python documentation docstring

help()编写类时,我在许多文档字符串中看到以下语句:“请参见help(type(self))以获取准确的签名。”

值得注意的是,它至少在help()scipy.stats.binom.__init__的{​​{1}}中。因此,我认为这是某种股票消息。

无论如何,我不知道这到底意味着什么。这是有用的信息吗?请注意,可以说,在全班“之外”,我从来没有访问过stockfish.Stockfish.__init__的权限。此外,如果我无法访问self方法的签名,因此甚至不能执行__init__,则无法实例化一个类。这很容易理解。22.为了使用help(type(my_object_instantiated)),我需要__init__的签名,但是为了读取__init__的签名,我需要使用{{1 }}。这一点严格来说是学术性的,即使我确实实例化了__init__,它实际上返回的是一个完全 different __init__的对象,其对象完全相同scipy.stats.binom文档字符串中显示一条消息,但是其签名完全不同,使用的效率也大大降低。换句话说,rv_frozen实际上没有给出准确的签名。这没用。

有人知道此消息来自何处,或者我应该怎么做?仅仅是来自文档生成器的垃圾,还是我在误用户?

1 个答案:

答案 0 :(得分:1)

有一个约定,用于构造类实例的签名放置在 class 上的__doc__中(因为这就是用户的调用),而不是{{1} }(或__init__)来确定该签名。对于__new__无法通过自省发现其签名的扩展类型(用C编写)尤其如此。

您看到的消息是__init__类的一部分(请参见type),因此默认情况下由元类继承。

在某些版本中,help(type.__init__)由于实际上不是类型而使事情变得混乱;可以调用的只是另一个类的实例(如scipy.stats.binom)。因此,在其上询问type仅能为那个类提供帮助(就像help会给您help(1)一样),您必须查看其{{1 }},以获取更多信息(如果有)。如您所观察到的,并要求help(int)调用 的结果,它将为返回的实际类提供帮助。