Similar presentations:
Dataclasses
1. Dataclasses
2. Что такое Dataclasses?
Модуль dataclasses, введённый в Python 3.7.Декоратор @dataclass для автоматической генерации
стандартных методов.
Упрощает создание классов для хранения данных.
Автоматически добавляет __init__, __repr__, __eq__ и другие
методы.
3. Класс без и с Dataclass
Обычный классclass Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name={self.name}, age={self.age})"
def __eq__(self, other):
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
4. Класс без и с Dataclass
Dataclassfrom dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
5. Dataclasses
Автоматическая генерация методов:__init__, __repr__, __eq__, __hash__.
Параметры декоратора: init, repr, eq, order,
frozen.
Поддержка значений по умолчанию.
Метод __post_init__ для дополнительной
инициализации.
6. Значения по умолчанию и __post_init__
from dataclasses import dataclass@dataclass
class Product:
name: str
price: float = 0.0
discount: float = 0.0
def __post_init__(self):
self.final_price = self.price * (1 self.discount)
product = Product("Laptop", 1000.0, 0.1)
print(product.final_price) # Вывод: 900.0
7. Когда использовать Dataclasses?
Для классов, предназначенных для храненияданных (DTO, модели данных).Упрощение кода
при работе с объектами.Замена кортежей,
словарей или именованных
кортежей.Ограничения: Не заменяет сложную
логику в классах.
8. Задачи для практики
1. Создайте dataclass Point с атрибутами x, y и значением по умолчаниюz=0.
2. Реализуйте dataclass Student с полями name, grade и методом
__post_init__ для проверки, что grade в диапазоне 0–100.
3. Создайте dataclass Order с полями items (список) и total с вычисляемым
значением в __post_init__.
4. Реализуйте dataclass Car с параметром frozen=True и попробуйте
изменить атрибут.
5. Создайте dataclass Employee с полем salary и сравнением через
order=True.
6. Реализуйте dataclass Inventory с методом для добавления элементов и
подсчёта их количества.
programming