Во всех задачах реализуй соответствующие классы, соблюдай правила ООП.
Создай класс BankAccount с приватным атрибутом баланса.
- Метод
deposit(amount)— пополнение счёта. - Метод
withdraw(amount)— снятие со счёта (не снимать больше, чем есть). - Метод
get_balance()— возвращает текущий баланс.
Создай два класса:
Speakerс методомplay_music()Lampс методомturn_on_light()
Создай класс SmartDevice, который наследует оба и добавляет метод activate() — включает музыку и свет.
Product: название, цена, вес.Item: содержитProductи количество.ShoppingCart: список объектовItem.
- Если товар уже есть в корзине (сравнение по названию), нужно увеличить количество в существующем
Item. - Если такого товара ещё нет, создать новый
Itemи добавить его в корзину. - При добавлении отрицательного количества — выбросить
ValueError.
- Удаляет
Item, содержащийProduct, из корзины. - Если товар не найден, вывести сообщение:
Продукт '<название>' не найден в корзине.
get_total_price()— общая стоимость всех товаров.get_total_weight()— общий вес всех товаров.__len__()— количество разных товаров (Item).__str__()— красивый вывод содержимого корзины.
Добавь в ShoppingCart:
- Метод обновления количества товара.
- Проверки на отрицательные значения цены, веса, количества.
- Поддержку сложения корзин (
+) — складываются количества совпадающих товаров. - Сортировку по:
- цене (если одинаково — по весу, потом по названию),
- весу,
- названию.
- Поддержку
inи индексированного доступа ([]).
Contact: имя, телефон, e-mailAddressBook: список контактов, методadd_contact
Добавь SaveToFileMixin с методом save_to_file(filename), который сохраняет текстовое представление объекта в файл.
ContactиAddressBookдолжны использовать этот миксин.
Добавь:
- Проверку на дублирование по email (удалять старый при совпадении).
- Удаление по имени.
- Поиск контактов по имени.
Реализуй:
Card: ранг (6–A) и масть (♠ ♥ ♦ ♣)Deck: 36 карт
- Перетасовать
- Вытянуть карту
- Показать козырь (последняя карта)
- Метод
beats(other, trump_suit)— побеждает ли карта другую по правилам «дурака»
- Хранит температуру в Цельсиях.
@classmethod:from_fahrenheit(cls, f)from_kelvin(cls, k)
@property:fahrenheitkelvin
Создай абстрактный класс Shape и классы-наследники:
Circle,Rectangle,Square
Создай ShapeFactory с методом create_shape(type: str) для создания фигур.
- Класс
Product: название, цена, вес - Разные стратегии сортировки:
- по цене
- по алфавиту
- по весу
Реализуй отдельные классы-стратегии и класс ProductSorter, который принимает стратегию и сортирует список.
К каждой задаче необходимо написать модульные тесты с использованием стандартного модуля unittest.