Исходный код students_folder.Zotov_folder.lab_2.User

from pydantic import BaseModel, ConfigDict, field_validator


[документация] class User(BaseModel): """Модель пользователя с валидацией возраста. Атрибуты: user_id (int): Уникальный идентификатор пользователя. name (str): Имя пользователя. surname (str): Фамилия пользователя. age (int): Возраст пользователя. Должен быть строго больше 18. Конфигурация: extra="forbid": Запрещает передачу дополнительных полей, не объявленных в модели. При попытке передать неизвестное поле будет вызвано исключение ValidationError. Валидация: Поле `age` проходит кастомную валидацию через метод `is_pos`. Если значение возраста меньше или равно 18, выбрасывается исключение ValueError с соответствующим сообщением. Пример: >>> user = User(user_id=1, name="Иван", surname="Иванов", age=25) >>> print(user) user_id=1 name='Иван' surname='Иванов' age=25 >>> User(user_id=2, name="Петр", surname="Петров", age=16) Traceback (most recent call last): ... pydantic_core._pydantic_core.ValidationError: 1 validation error for User age 16 младше 18 [type=value_error, input_value=16, input_type=int] """ model_config = ConfigDict(extra="forbid") user_id: int name: str surname: str age: int
[документация] @field_validator("age", mode="after") @classmethod def is_pos(cls, value: int) -> int: """Проверяет, что возраст пользователя строго больше 18. Args: value (int): Значение возраста для валидации. Returns: int: Валидное значение возраста. Raises: ValueError: Если возраст меньше или равен 18. """ if value <= 18: raise ValueError(f"{value} младше 18") return value