Глава 14 · Создаём объекты реального мира
Практика: dataclass
Tovar главы 14.14, но короче — @dataclass берёт на себя шаблонный код.
Практика: Tovar как dataclass
Перепишем Tovar из раздела 14.14 через
@dataclass:
tovar_dataclass.py
from dataclasses import dataclass
@dataclass
class Tovar:
nazvanie: str
tsena: float
def so_skidkoj(self, protsent):
return self.tsena * (1 - protsent / 100)
knigi = Tovar("Книга", 590)
print(knigi) # Tovar(nazvanie='Книга', tsena=590)
print(knigi.so_skidkoj(10)) # 531.0
__eq__ достаётся бесплатно
Tovar("Книга", 590) == Tovar("Книга", 590) — True, хотя мы не писали __eq__ вручную ни разу: dataclass сравнивает по значениям всех полей автоматически.★★ Самостоятельная задача
Zakaz как dataclass
Определите @dataclass Zakaz с полями tovar: Tovar и kolichestvo: int, и методом summa(self), возвращающим self.tovar.tsena * self.kolichestvo.
Практика: dataclass Tovar
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки