如何解决Pydantic @computed_field装饰@property时的mypy错误?
解决Pydantic @computed_field 加 @property 引发的mypy报错问题
一、代码修复:删掉多余的@property
在Pydantic 2.x版本里,@computed_field装饰器本身就具备把方法转成模型可访问属性的能力,完全没必要叠加@property使用。叠着用反而会触发mypy的语法检查错误。
修复后的代码如下:
from pydantic import BaseModel, computed_field class MyClass(BaseModel): value1: str value2: str @computed_field def joined_values(self) -> str: return self.value1 + self.value2 obj = MyClass(value1="1", value2="2") print(f"{obj.joined_values=}") # obj.joined_values='12'
改完之后代码正常运行,mypy也不会报错,而且joined_values照样会作为计算字段被包含在FastAPI的JSON响应里。
二、要是非得保留原写法,禁用mypy提示的两种办法
如果因为特殊需求必须保留@computed_field加@property的写法,可以用下面两种方式关掉mypy的错误提示:
1. 单行注释精准忽略
在报错的@property那行加# type: ignore[misc]注释:
from pydantic import BaseModel, computed_field class MyClass(BaseModel): value1: str value2: str @computed_field @property # type: ignore[misc] def joined_values(self) -> str: return self.value1 + self.value2
2. 全局配置文件忽略规则
在项目根目录的mypy.ini或者pyproject.toml里加配置,全局禁用这个错误规则:
- 用
mypy.ini的话:
[mypy] disable_error_codes = misc
- 用
pyproject.toml的话:
[tool.mypy] disable_error_codes = ["misc"]
注意:全局关misc规则会忽略所有同类提示,优先推荐用单行注释精准忽略的方式。
内容的提问来源于stack exchange,提问作者pyjedy
相关产品推荐
相关产品推荐

