учебный путь · python
Python: ООП
Освойте классы на прикладных задачах: от первой анатомии класса и состояния с инвариантами до наследования, dunder-протоколов и мини-систем. Без сквозного проекта — каждая задача самостоятельна.
AI-ассистент ведёт подсказками, но решение не выдаёт
curriculum
Задачи пути — 5 модулей, 25 задач
Каждый модуль — навык. Решаешь задачи по порядку, и к финалу из них собирается рабочий результат.
1.1
Подарочная карта
Ваш первый класс: подарочная карта кофейни с кодом, балансом и ценником — __init__, self и два метода
1.2
Комнатное растение
Класс-напоминалка полива: метод с параметром и булев ответ — объект сам решает, пора ли поливать
1.3
Парковочное место
Объект решает по своим атрибутам: крытое место дороже на четверть — метод-калькулятор с целочисленной надбавкой
1.4
Рецепт на компанию
Класс рецепта пересчитывает граммовку под любое число порций — атрибуты и метод-калькулятор
1.5
Билет на поезд
Финал темы: билет с тремя методами — место у окна, ценник и сводка, которые работают друг с другом
2.1
Умная бутылка
Первое мутируемое состояние: бутылка стартует полной, drink() не пускает уровень ниже нуля, refill() наполняет до краёв
2.2
Табло настолки
Две согласованные величины в одном объекте: add() копит сумму партии и помнит лучшее одиночное начисление
2.3
Очередь печати
Внутренняя коллекция как состояние: очередь офисного принтера со строгим FIFO и вежливым None вместо падения
2.4
Читательский билет
Fail-closed на практике: лимит «три книги на руках», отказ не меняет формуляр, а titles() отдаёт копию, не оригинал
2.5
Автомат напитков
Финал темы: платёжный автомат с двумя величинами состояния — fail-closed покупка, сдача с обнулением и вечный счётчик продаж
3.1
Грейд старшего
Первый наследник: SeniorEmployee расширяет готовый Employee — super().__init__, свой грейд и переопределённая формула оклада
3.2
SMS-канал
Полное переопределение: SMS-канал заменяет базовый рендер своим форматом, а готовый Notification продолжает работать по-старому
3.3
Счётчик с журналом
Дополнить, не заменить: add() наследника сначала зовёт super().add(), потом пишет в журнал — порядок вызова решает номер клика
3.4
Состав команды
Композиция вместо наследования: состав хранит объекты Player и сам отвечает, кто сильнейший и каков средний рейтинг
3.5
Прокат техники
Финал темы: вся иерархия ваша — базовый Vehicle, наследник Truck с super() в середине формулы и label(), который достаётся бесплатно
4.1
Ключ от шкафчика
Научите ключи сравниваться: __eq__ с проверкой типа и __repr__ для отчёта — операторы == и in начинают работать сами
4.2
Клип в монтажке
Клип представляется сам: __str__ с тайм-кодом вида 3:08 и метод is_short — print(clip) вместо ручного форматирования
4.3
Уровень лояльности
Уровни АЗС сравниваются операторами: __eq__ и __lt__ по баллам — и sorted() расставляет клиентов без аргумента key
4.4
Рюкзак похода
Рюкзак как контейнер: __len__ и __contains__ — len(pack) и "верёвка" in pack без доступа к внутреннему списку
4.5
Деньги как объект
Финал темы: деньги складываются оператором + в новый объект — иммутабельность, __eq__ с чужим типом и ценник через __str__
5.1
Вопрос викторины
Класс-проверялка для барной викторины: ответ засчитывается без оглядки на регистр и пробелы — но эталон нормализуется тоже
5.2
Локальная хранилка
Оффлайн-менеджер паролей: save перезаписывает, get отдаёт None для незаписанного сайта — и чтение не создаёт записей
5.3
Книжный клуб
Голосование за книгу месяца: vote копит голоса, winner объявляет победителя с честным тай-брейком по алфавиту
5.4
Склад мастерской
Учёт материалов гитарной мастерской: add накапливает, take выдаёт «всё или ничего» — не хватает, значит False и ни единицы не списано
5.5
Таблица аркады капстоун
Финал курса: таблица рекордов аркадного автомата — submit бережёт лучший счёт, top печатает рейтинг с честным тай-брейком
Путь входит в Koddo Premium Открой все премиум-пути, AI-ассистента без лимитов и daily challenge. от 490 ₽ / мес
❯ koddo start python-oop
Готов начать этот путь?
Зарегистрируйся — откроем путь прямо на первой задаче. Без установки и настройки, всё в браузере.