gpt4 book ai didi

python - __signature__ 和 __text_signature__ 在 Python 3.4 中有什么用

转载 作者:太空狗 更新时间:2023-10-29 18:03:51 27 4
gpt4 key购买 nike

如果在 CPython 3.4 上对某些内置可调用对象(类构造函数、方法等)执行 dir(),就会发现其中许多通常有一个名为 __text_signature__,例如:

>>> object.__text_signature__
'()'
>>> int.__text_signature__
>>> # was None

然而,这方面的文档是不存在的。此外,谷歌搜索属性名称表明还有另一个可能的特殊属性 __signature__,尽管我没有找到任何内置函数。

我知道它们与函数参数签名有关,但仅此而已,它们的值表示什么以及它们的用途是什么?

最佳答案

这些属性用于启用对 C 代码中定义的 Python 对象的内省(introspection)。 C-API Argument Clinic提供数据,在构建时协助inspect模块Signature objects .以前不支持 C-API 函数的内省(introspection)。

查看内部inspect._signature_fromstr() function关于如何使用 __text_signature__ 值。

目前,__text_signature__ 属性由 C-API 中对象的内部文档字符串集填充;对 objectname(...)\n--\n\n 进行简单的文本搜索,其中 \n--\n\n 是典型的属性诊所生成的文档字符串。看看 type object slots如果你想找一些例子。或者你可以看看 audioop module source查看如何使用 Argument Clinic 来定义签名; Argument Clinic script在构建生成文档字符串时在那些上运行(在随附的 audioop.c.h file 中)。

__signature__ 属性(如果存在)将是一个inspect.Signature() 对象; C-API 可以提供完全解析的 Signature 实例,而不是提供文本版本。

关于python - __signature__ 和 __text_signature__ 在 Python 3.4 中有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25847035/

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