Наследование датаклассов в ООП в Python
Датакласс может наследовать от другого
датакласса. Потомок добавляет свои
поля, а декоратор @dataclass
нужен на каждом классе в цепочке.
Давайте сделаем родителя и потомка:
from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
@dataclass
class Employee(User):
salary: int
Создадим объект сотрудника:
emp = Employee('john', 25, 1000)
print(emp)
Правило порядка полей действует и при наследовании: поле без значения по умолчанию не может идти после поля со значением у родителя.
Такой код вызовет ошибку:
@dataclass
class User:
name: str = 'john'
@dataclass
class Employee(User):
salary: int # ошибка порядка полей
Правильно сначала объявить обязательные поля, а значения по умолчанию ставить в конце:
@dataclass
class User:
name: str
age: int = 25
@dataclass
class Employee(User):
salary: int
department: str = 'it'
Сделайте датакласс User
с полями name и age.
Сделайте датакласс Employee,
наследующий от User,
с полем salary.