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

如何解决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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:07:17