gpt4 book ai didi

python "See help(type(self)) for accurate signature."

转载 作者:行者123 更新时间:2023-12-02 08:32:21 28 4
gpt4 key购买 nike

help()处理一个类时,我在许多文档字符串中看到了以下语句:“请参阅help(type(self))以获得准确的签名。”

值得注意的是,它位于 scipy.stats.binom.__init__stockfish.Stockfish.__init__help() 中,位于非常少。因此,我认为这是某种库存消息。

无论如何,我不明白这到底意味着什么。这是有用的信息吗?请注意,可以说,作为类(class)的“外部”,我永远无法访问 self。此外,如果我无法访问 __init__ 方法的签名,则无法实例化一个类,因此甚至无法执行 help(type(my_object_instantiated)) 。这是一个陷阱 22。为了使用 __init__,我需要 __init__ 的签名,但是为了读取 __init__ 的签名,我需要用__init__实例化一个对象。然而,这一点是严格的学术性的,因为即使我确实成功实例化了 scipy.stats.binom,它实际上返回了一个完全不同类的对象, rv_frozen,在其 __init__ 文档字符串中具有完全相同的消息,但其签名完全不同并且完全没有用处。换句话说,help(type(self))实际上并没有给出准确的签名。没啥用。

有谁知道这条消息来自哪里,或者我应该如何理解它?这只是文档生成器中的垃圾,还是我犯了用户错误?

最佳答案

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

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

在某些版本中,scipy.stats.binom 由于实际上不是一种类型而使问题变得困惑;它只是另一个可调用类(如type)的实例。因此,请求 help 只会为 那个 类提供帮助(就像 help(1) 为您提供 help(int) )—您必须查看其 __call__ 以获取更多信息(如果有)。并在调用的结果上请求帮助,它可以为您提供有关它返回的实际类的帮助,正如您所观察到的。

关于 python "See help(type(self)) for accurate signature.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com