Глава 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)
KorzinaTovarHAS-A (СПИСОК)
Korzina хранит список объектов Tovar
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, без установки
Открыть практику →