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\']` 的加引号类型提示是怎么回事?的详细内容,更多请关注其它相关文章!