Ara*_*Fey 6 python class signature
该inspect.signature文档指出它支持将类作为输入,但是并没有涉及任何细节:
接受从纯函数和类到
functools.partial()对象的各种Python可调用对象。
如果我致电inspect.signature(MyClass),它返回什么签名?它是否返回的签名MyClass.__init__?还是MyClass.__new__?或者是其他东西?
use*_*ica 10
它会尽其所能尝试几乎所有内容。我认为这些细节可能是故意未记录在案的,因为它们很复杂并且可能会越来越多,因此随着新的Python版本增加了更多尝试的内容。
例如,从CPython 3.7.3开始,代码路径按顺序尝试以下操作:
__call__在Python中定义的自定义,则它将使用该元类的签名__call__并删除第一个参数。__new__Python定义的方法,则它将使用__new__签名并删除第一个参数。__init__用Python定义的方法,则它将使用已__init__删除第一个参数的签名。__text_signature__。如果找到一个,它将进行分析__text_signature__以获取签名信息。__init__为object.__init__,类型__new__为object.__new__,则返回object类的签名。(这时有一个误导性的注释,并且可能包含涉及元类的错误-注释说它将要检查type.__init__,但并没有这样做。我认为此提交可能在这里犯了一个错误。)ValueError说法:找不到任何东西。| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |