如何强制要求使用Python 3.12的override装饰器?
强制要求Python覆写方法使用override装饰器的实现方案
用mypy强制检查
mypy(Python静态类型检查工具)支持强制要求覆写父类方法时添加@override装饰器,具体操作如下:
升级mypy到最新版本
确保你的mypy版本足够新(建议1.5+),以支持标准库的typing.override装饰器及相关检查:pip install --upgrade mypy配置mypy检查规则
在项目的配置文件(如pyproject.toml或mypy.ini)中启用override错误码检查:- 若使用
pyproject.toml:[tool.mypy] # 启用严格模式(包含override检查),或单独启用override错误码 strict = true # 或者单独设置:enable_error_codes = ["override"] - 若使用
mypy.ini:[mypy] strict = True # 或者单独设置:enable_error_codes = override
- 若使用
效果验证
当子类覆写父类方法但未添加@override装饰器时,mypy会抛出明确错误:error: Missing override decorator for method "log_status" [override]
其他代码检查工具选项
除了mypy,Pyright(微软开发的静态类型检查工具)也支持类似检查,只需在配置中设置:
{ "reportMissingOverride": true }
注意事项
@override装饰器仅用于静态类型检查,运行时不会产生任何行为;- Python 3.12+直接使用
from typing import override,旧版本可使用mypy_extensions.override兼容。
内容的提问来源于stack exchange,提问作者Victor Egiazarian
相关产品推荐
相关产品推荐

