Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpDcPi 125 of 174 menu
◀ ▶

Действия после создания датакласса в ООП в Python

Автоматический конструктор датакласса не всегда удобно переопределять. Для дополнительных действий после записи полей служит метод __post_init__.

Он вызывается сразу после того, как конструктор заполнил все поля. Давайте проверим возраст пользователя:

from dataclasses import dataclass @dataclass class User: name: str age: int def __post_init__(self): if self.age < 0: raise ValueError('age error')

Создадим объект с корректным возрастом:

user = User('john', 25)

А при отрицательном возрасте получим ошибку:

user = User('john', -1) # ошибка

Сделайте датакласс Employee с полями name и salary. В __post_init__ проверьте, что зарплата не отрицательная.

Добавьте в __post_init__ запись поля label со строкой 'employee'. Поле объявите с init=False.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить