Настройка поля датакласса в ООП в Python
Функция field позволяет управлять
тем, как поле участвует в конструкторе
и в строковом представлении объекта.
Параметр init=False исключает поле
из автоматического конструктора.
Параметр repr=False скрывает поле
при выводе через print.
Давайте сделаем класс User.
Поле uid не попадет в конструктор,
a password не будет видно
в print:
from dataclasses import dataclass, field
@dataclass
class User:
name: str
age: int
uid: int = field(init=False, default=0)
password: str = field(repr=False, default='')
Создадим объект, передав только имя и возраст:
user = User('john', 25)
print(user) # password не выведется
Значение uid можно задать
после создания:
user.uid = 100
print(user.uid) # выведет 100
Сделайте датакласс Employee
с полями name, salary
и secret. Поле secret
не должно попадать в вывод
объекта через print.
Добавьте поле id с
init=False и значением
по умолчанию 0. Убедитесь,
что его нет среди параметров
конструктора.