Вопрос:

Выполните следующие задания: Вы устроились бэкенд-разработчиком в новую кофейню.

Фотография
Фотография

Ответ ассистента

Привет! Давай разберем эту задачу на ООП в Python. Нам нужно создать структуру для системы заказов в кофейне. Вот готовое решение по шагам: ### Шаг 1: Класс Dessert Используем модуль `dataclasses` для удобства. ```python from dataclasses import dataclass @dataclass class Dessert: name: str calories: int price: float ``` ### Шаг 2 и 3: Абстрактный класс BaseDrink и его наследники Нам понадобится модуль `abc` для создания абстрактного метода. ```python from abc import ABC, abstractmethod class BaseDrink(ABC): def __init__(self, name, price): self.name = name self.price = price @abstractmethod def brew(self): pass class Coffee(BaseDrink): def brew(self): return f"Готовлю кофе {self.name}..." class Tea(BaseDrink): def brew(self): return f"Завариваю чай {self.name}..." ``` ### Шаг 4: Класс Order Здесь мы используем магические методы для работы с суммой и объединением заказов. ```python class Order: def __init__(self, table_number, items): self.table_number = table_number self.items = items # Список из Dessert, Coffee или Tea @property def total_price(self): return sum(item.price for item in self.items) def __str__(self): return f"Столик #{self.table_number} | Позиций: {len(self.items)} | К оплате: {self.total_price} ₽" def __add__(self, other): new_items = self.items + other.items return Order(f"{self.table_number}_{other.table_number}", new_items) ``` ### Шаг 5: Тестирование ```python # a. Десерты cheesecake = Dessert("Чизкейк", 300, 200.0) croissant = Dessert("Круассан", 250, 150.0) # b. Напитки cap = Coffee("Капучино", 150.0) tea = Tea("Зеленый чай", 100.0) # c. Приготовление print(cap.brew()) print(tea.brew()) # d. Заказы order1 = Order(1, [cap, croissant]) order2 = Order(2, [tea, cheesecake]) # e. Объединение merged_order = order1 + order2 print(merged_order) ```

Другие решения

Что ещё задавали пользователи