You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.12使用PEP 695类型别名触发Mypy错误,如何解决?

PEP 695类型别名在Mypy中报错的原因解析

问题重现

在Python 3.12中使用PEP 695的新语法定义类型别名时,Mypy报错PEP 695 type aliases are not yet supported,报错代码如下:

type IntList = list[int]  # 报错行
type OtherType = int      # 报错行

class test:
    pass

type SomeType = test      # 报错行

改用PEP 613的写法则无报错:

IntList: TypeAlias = list[int]
OtherType: TypeAlias = int

class test:
    pass

SomeType: TypeAlias = test

原因说明

  1. Python版本支持无问题:Python 3.12确实原生支持PEP 695的type语法定义类型别名,你的操作没有错误,也不需要额外导入。
  2. Mypy支持滞后:Mypy对PEP 695新特性的支持是逐步迭代的,旧版本的Mypy尚未适配这种新语法。需要升级Mypy到足够新的版本(Mypy 1.5及以上开始部分支持PEP 695,后续版本逐步完善对该特性的支持)。
  3. 两种写法的差异来源:
    • type IntList = list[int]是PEP 695(Python 3.12+)推出的原生类型别名语法,属于更简洁的新写法。
    • IntList: TypeAlias = list[int]是PEP 613(Python 3.9+)引入的类型别名标注方式,Mypy对这种写法的支持更早、更成熟,所以不会触发报错。

解决方案

  • 若想使用PEP 695的简洁写法,直接升级Mypy到最新稳定版本即可。
  • 若暂时不想升级工具,继续使用PEP 613的TypeAlias标注写法即可正常通过Mypy检查。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:42:22