Этот вопрос проверяет понимание того, как в Pydantic можно вычислять значения полей на основе других данных модели.
@computed_field используется для создания полей, значение которых вычисляется автоматически при обращении к модели. Такой подход позволяет инкапсулировать логику вычислений внутри модели, не храня лишние данные. Он помогает избежать дублирования вычислений и делает модель более выразительной. Обычно применяется для форматирования, агрегаций и вычисления производных значений.
computed_fieldcomputed_field — это специальный декоратор Pydantic (v2), позволяющий объявлять поле модели, которое рассчитывается на основе других полей и не хранится явно.
Он нужен тогда, когда значение зависит от входных данных и должно вычисляться «на лету», оставаясь частью схемы модели.
Создание производных значений
Например, форматированное имя, вычисленная цена, агрегированное состояние объекта.
Инкапсуляция логики внутри модели
Модель сама знает, как получить нужное значение, и не требует внешних функций.
Сериализация вычисляемых полей@computed_field поддерживает вывод значения в JSON, как если бы это было обычное поле.
from pydantic import BaseModel, computed_field
class User(BaseModel):
first_name: str
last_name: str
@computed_field
def full_name(self) -> str:
return f"{self.first_name} {self.last_name}"
u = User(first_name="Ada", last_name="Lovelace")
print(u.full_name) # Ada Lovelace
computed_field стоит применять, когда нужно формировать значение на основе других полей без хранения его в модели.