Действия после создания датакласса в ООП в 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.