Введение в датаклассы в ООП в Python
Часто класс нужен только для хранения данных: имени, возраста, зарплаты. Тогда приходится вручную писать конструктор, строковое представление и сравнение объектов.
Модуль dataclasses упрощает такую
работу. Достаточно перечислить поля
с аннотациями типов, а декоратор
@dataclass соберет нужные
методы сам.
Давайте сделаем класс User
с полями name и age:
from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
Создадим объект. Конструктор уже есть - его сгенерировал декоратор:
user = User('john', 25)
Выведем объект на экран. Сработает
автоматически созданный метод
__repr__:
print(user) # User(name='john', age=25)
Сравним два объекта с одинаковыми
полями. Сработает метод __eq__:
user1 = User('john', 25)
user2 = User('john', 25)
print(user1 == user2) # выведет True
В этом разделе мы разберем настройку полей, заморозку, порядок сравнения и другие возможности датаклассов.