我尝试在 Python 中通过 MyPy 使用类型别名时遇到错误。这是我的代码的简化版本:
type IntList = list[int] # This line causes the error
type OtherType = int # This line causes the error
class test:
pass
type SomeType = test # This line causes the error
我使用的是 Python 3.12,据说它支持 PEP 695 类型别名。我是否做错了什么,缺少导入,或者 Mypy 对 PEP 695 的支持不完整?
编辑: 如果我这样做的话,看起来我不会从 MyPy 得到任何错误。
IntList: TypeAlias = list[int]
OtherType: TypeAlias = int
class test:
pass
SomeType: TypeAlias = test
这是因为Python 3.9+中的选项吗?
PEP 695 尚未在 mypy 中实现(如错误消息所述),问题跟踪如下: https://github.com/python/mypy/issues/15238
因此,您可以在 Python 3.12 中使用
type x = y
并且解释器可以工作,但它不能使用 mypy 检查类型。
请注意,即使在最新的 mypy 中实现它,在 Python 3.11 上运行的 mypy 也可能不支持它。因此这些别名不会在任何承诺支持 3.11 的地方使用。