我需要用 pydantic 的
@property
装饰 @computed_field
(自动生成键值对并将其包含在 FastAPI JSON 响应中)。
在以下示例中,mypy 显示错误。
如果出现错误,我该如何修复?
如果一切正确,我该如何禁用此 mypy 消息?
from pydantic import BaseModel, computed_field
class MyClass(BaseModel):
value1: str
value2: str
@computed_field
@property
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 .
stackperflow_pydantic_property.py:25: error: Decorators on top of @property are not supported [misc]
Found 1 error in 1 file (checked 2 source files)
版本:
$ python -V
Python 3.10.11
$ pip list
mypy 1.7.1
pydantic 2.5.2
mypy 目前不支持此功能,请参阅文档中的警告。
自从 https://github.com/python/mypy/issues/14461 被合并后,似乎在 mypy 上处理这个问题的正确方法是添加
# type: ignore[prop-decorator]
注释:
from pydantic import BaseModel, computed_field
class MyClass(BaseModel):
value1: str
value2: str
@computed_field # type: ignore[prop-decorator]
@property
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'