Python 中 `Type[\'Model\']` 的加引号类型提示是怎么回事?(引号.提示.类型.Python.Type...)

wufei1232024-10-31python36

python 中 `type[\'model\']` 的加引号类型提示是怎么回事?

python 加引号的 typing hint 解析

在 pydantic 中,你会发现类似 Type['Model'] 这样的类型提示,其中 Model 用引号括起来。这可能会让人困惑,因为似乎 Model 已经变成了一个字符串。

原理

出现在引号中的类型提示通常代表尚未完全定义的类型。在使用这些类型之前必须先对其进行定义。例如,Model 类需要在方法的类型提示中使用,但它可能在定义方法时尚未完全定义。因此,就使用字符串 "Model" 来表示尚未定义的类型。

PEP 规定

[PEP 563](https://peps.python.org/pep-0563/) 解释了此行为:

当一个类型提示包含尚未定义的名称时,该定义可以用字符串字面量表示,以便稍后解析。

兼容性

加引号的类型提示最初是为了兼容 Python 3.6 及以下版本而引入的,因为这些版本不支持解析尚未定义的类型。不过,根据 PEP 563,未来所有类型提示都将以字符串形式表示,并在需要时延迟计算。

消除引号

在 Python 3.7 及更高版本中,可以通过 from __future__ import annotations 提前启用 PEP 563 的功能,从而消除引号。启用后,Type['Model'] 可以直接写成 Model,而无需加引号。

以上就是Python 中 `Type[\'Model\']` 的加引号类型提示是怎么回事?的详细内容,更多请关注知识资源分享宝库其它相关文章!

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。