首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python 3.4中使用的__signature__和__text_signature__是什么

在Python 3.4中使用的__signature__和__text_signature__是什么
EN

Stack Overflow用户
提问于 2019-07-09 07:19:33
回答 1查看 0关注 0票数 0

如果dir()在CPython 3.4上对某些内置可调用对象(类构造函数,方法等)进行处理,则会发现其中许多通常具有一个特殊属性__text_signature__,例如:

代码语言:javascript
复制
>>> object.__text_signature__
'()'
>>> int.__text_signature__
>>> # was None

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-07-09 16:50:56

这些属性用于启用C代码中定义的Python对象的内省。的C-API参数诊所提供数据,以协助inspect建立时模块Signature的对象。之前不支持对C-API函数进行自省。

请参阅有关如何使用该值的内部inspect._signature_fromstr()函数__text_signature__

目前,该__text_signature__属性是从C-API中对象的内部docstring集填充的; 进行简单的文本搜索objectname(...)\n--\n\n,其中\n--\n\n典型的是Attribute Clinic生成的文档字符串。如果您想查找一些示例,请查看type对象槽。或者您可以查看audioop模块源以查看Argument Clinic如何用于定义签名; 该参数诊所脚本正在建设时产生的文档字符串(在附带的那些运行audioop.c.h文件)。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档