# pydantic.errors.PydanticUserError：@computed_field 应与 @property 搭配使用。当 @computed_field 应用于非属性时，会引发此错误。

- **ID:** `python/pydantic-computed-field-serialization`
- **领域:** python
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

装饰器顺序颠倒：@computed_field 放在了没有 @property 的普通方法之上，或 @property 放在了 @computed_field 之上。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 2.x | active | — | — |

## 解决方案

1. **** (95% 成功率)
   ```
   from pydantic import BaseModel, computed_field
class M(BaseModel):
    a: int
    b: int
    @computed_field
    @property
    def total(self) -> int:
        return self.a + self.b
   ```
2. **** (85% 成功率)
   ```
   from pydantic import model_serializer
class M(BaseModel):
    a: int
    @model_serializer
    def ser(self):
        return {'a': self.a, 'double': self.a * 2}
   ```

## 无效尝试

- **** — Field no longer appears in model_dump / JSON output. (60% 失败率)
- **** — staticmethod returns a descriptor; validation raises because it is not a property. (55% 失败率)
- **** — Recomputes only at construction; stale if inputs mutate. (50% 失败率)
