加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – TypeVar,NewType中__name__的用途

发布时间:2020-12-16 22:29:30 所属栏目:Python 来源:网络整理
导读:在输入模块中,TypeVar和NewType都需要作为第一个位置参数,一个字符串用作创建对象的__name__属性. __name__的目的是什么? 考虑到这是一个强制性的论点,我希望它是必不可少的.在引入类型提示的PEP-484中,参数通常设置为分配给对象的变量名称的字符串: T = T

在输入模块中,TypeVar和NewType都需要作为第一个位置参数,一个字符串用作创建对象的__name__属性. __name__的目的是什么?

考虑到这是一个强制性的论点,我希望它是必不可少的.在引入类型提示的PEP-484中,参数通常设置为分配给对象的变量名称的字符串:

T = TypeVar('T',int,float,complex)

但是,我无法确定这最终是如何在CPython中的typing.py中使用的.用任何其他字符串替换字符串似乎不会破坏我的测试中的任何内容.

最佳答案
__name__属性是IDE(例如,将在其类型提示中使用)的关联类型名称.鉴于以下玩具代码:

T = TypeVar('not_T',float)
def test_func(arg: T): pass

使用像test_func(‘not_a_number’)这样不正确的函数调用函数会产生类似这样的类型提示:

Expected type 'not_t',got 'str' instead

由于它们的主要用途是调试,因此不会对类型.__ name__与用于处理它的名称标记之间的符合性进行限制.

对于其他用例,您还可以检查用于键入提示的任何对象的__annotations__成员中的类型,例如:

print(test_func.__annotations__)
>> {'arg': ~not_T}

并使用它在您的代码中实现进一步的类型检查或处理 – 在这种情况下,你的TypeVar .__ name__s更有意义:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读