Глава 14 · Создаём объекты реального мира
Мини-проект: Корзина покупок v2
Список словарей из главы 12 становится списком объектов Tovar внутри Korzina.
Мини-проект: Корзина покупок v2
В главе 12 корзина покупок хранилась как список словарей. Теперь у нас есть инструменты,
чтобы сделать её надёжнее: класс Tovar для одного товара и класс
Korzina, который хранит СПИСОК объектов
Tovar — композиция из раздела 14.13 в действии.
korzina_v2.py
class Tovar:
def __init__(self, nazvanie, tsena):
self.nazvanie = nazvanie
self.tsena = tsena
class Korzina:
def __init__(self):
self.tovary = [] # атрибут ЭКЗЕМПЛЯРА — раздел 14.8!
def dobavit_tovar(self, tovar):
self.tovary.append(tovar)
def obshchaya_summa(self):
return sum(t.tsena for t in self.tovary)
def kolichestvo_tovarov(self):
return len(self.tovary)
ispolzovanie.py
korzina = Korzina()
korzina.dobavit_tovar(Tovar("Книга", 590))
korzina.dobavit_tovar(Tovar("Ручка", 90))
print(korzina.kolichestvo_tovarov()) # 2
print(korzina.obshchaya_summa()) # 680
Почему это лучше словаря
У объекта
Tovar всегда есть ровно nazvanie и tsena — опечатка в ключе словаря (tovar["cena"] вместо tovar["tsena"]) обнаружится только во время выполнения, а обращение к несуществующему атрибуту объекта — тоже во время выполнения, но с классом легче добавить проверки и методы (подсчёт суммы, скидки) в одном понятном месте.★★ Самостоятельная задача
udalit_tovar
Добавьте Korzina метод udalit_tovar(self, nazvanie), удаляющий из self.tovary первый товар с этим названием.
Практика: Корзина покупок v2
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки