Курс на Stepik
Обложка курса «Python ООП с нуля до сеньера» на Stepik
500 ₽

Python ООП с нуля до сеньера ★ 0.000

Открыть на
STEPIK.ORG

Практический курс по объектно-ориентированному программированию в Python: от объектов, классов, self и __init__ до data model, dataclasses, типизации, паттернов, тестирования, рефакторинга и итоговой архитектуры.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Python ООП с нуля до сеньера»Учеников на курсе 49
Сертификаты, выданные на курсе «Python ООП с нуля до сеньера»Сертификатов выдано 0
Отзывы о курсе «Python ООП с нуля до сеньера»Отзывов получено 0
Рейтинг курса «Python ООП с нуля до сеньера»Рейтинг курса 0.000
Уроки в курсе «Python ООП с нуля до сеньера»Количество уроков 141
Тесты в курсе «Python ООП с нуля до сеньера»Количество квизов 534
Время прохождения курса «Python ООП с нуля до сеньера»Время прохождения курса —
Стоимость курса «Python ООП с нуля до сеньера»Стоимость курса 500 ₽ —
Обновления курса «Python ООП с нуля до сеньера»Обновления курса — —
Дата публикации курса «Python ООП с нуля до сеньера»Дата публикации курса — ———
Последнее обновление курса «Python ООП с нуля до сеньера»Последнее обновление — ———

Содержание курса

Разделы в курсе «Python ООП с нуля до сеньера» 20 разделов Уроки в курсе «Python ООП с нуля до сеньера» 141 урок Тесты в курсе «Python ООП с нуля до сеньера» 534 теста Время прохождения курса «Python ООП с нуля до сеньера» 0 ч. Последнее обновление курса «Python ООП с нуля до сеньера» обн. 16 июля 2026

Модуль 1. Введение: зачем Python-разработчику ООП

8 уроков
1. О курсе: как проходить обучение и канал «Логово Дата-Инженера» ↗
2. Зачем нужно ООП в Python и какие задачи оно решает ↗
3. Курс от джуна до сеньора: как мы будем двигаться ↗
4. Рабочая среда: Python, venv, редактор и запуск файлов ↗
5. Как читать документацию Python: tutorial, reference и library ↗
6. Процедурный код против объектного: первый контраст ↗
7. Мини-проект курса: домен задач, пользователей и уведомлений ↗
8. Как выполнять практику и проверять себя без самообмана ↗

Модуль 2. Объекты до классов: модель памяти Python

7 уроков
1. Объект, имя и ссылка: что реально хранится в переменной ↗
2. id, type и value: три вопроса к любому объекту ↗
3. Изменяемые и неизменяемые объекты: почему list ведёт себя… ↗
4. Присваивание не копирует объект: алиасы и неожиданные изменения ↗
5. is против ==: идентичность и равенство без путаницы ↗
6. None, True и False как объекты-одиночки ↗
7. Ментальная модель памяти для будущих классов ↗

Модуль 3. Первый класс: состояние и поведение

7 уроков
1. class как новый тип: создаём самый простой класс ↗
2. Экземпляр класса: как рождается объект ↗
3. Атрибуты экземпляра: где хранится состояние ↗
4. Методы экземпляра и параметр self ↗
5. __init__: правильная инициализация объекта ↗
6. Первый объектный пример: Task с названием и статусом ↗
7. Типичные ошибки новичка: забытый self, общие данные и лишние… ↗

Модуль 4. Атрибуты, методы и пространство имён

7 уроков
1. __dict__ объекта и класса: где лежат атрибуты ↗
2. Атрибуты класса против атрибутов экземпляра ↗
3. Динамическое добавление атрибутов: сила и опасность ↗
4. Методы как функции, привязанные к объекту ↗
5. Порядок поиска атрибутов: instance, class, base classes ↗
6. hasattr, getattr, setattr, delattr без магии ↗
7. Когда динамика Python помогает, а когда разрушает дизайн ↗

Модуль 5. Инкапсуляция и инварианты

7 уроков
1. Инкапсуляция: не про запреты, а про границы ответственности ↗
2. Публичные, защищённые и приватные имена: договорённости Python ↗
3. Name mangling: зачем нужны два подчёркивания ↗
4. Инвариант объекта: состояние, которое всегда должно быть верным ↗
5. property: управляем доступом без ломки интерфейса ↗
6. Валидация в setter и ошибки плохих данных ↗
7. Проектируем Task так, чтобы невозможное состояние не создавалось ↗

Модуль 6. Конструкторы и варианты создания объектов

7 уроков
1. Альтернативные конструкторы через classmethod ↗
2. staticmethod: когда метод не зависит ни от объекта, ни от класса ↗
3. Фабричная функция или класс: где проходит граница ↗
4. Разбор входных данных перед созданием объекта ↗
5. Именованные конструкторы: from_dict, from_json, from_row ↗
6. Ошибки и валидация при создании объекта ↗
7. Сохраняем простой интерфейс создания в растущем проекте ↗

Модуль 7. Специальные методы и Python data model

7 уроков
1. Что такое data model и почему двойные подчёркивания не магия ↗
2. __repr__ и __str__: строковое представление для разработчика… ↗
3. __bool__: когда объект считается истинным ↗
4. __len__ и __contains__: размер и оператор in ↗
5. __call__: объект как функция ↗
6. __format__: аккуратный вывод в f-строках ↗
7. Правило: специальные методы должны поддерживать смысл объекта ↗

Модуль 8. Равенство, порядок, хеширование и копирование

7 уроков
1. __eq__: равенство по смыслу, а не по адресу ↗
2. NotImplemented и сравнение с чужими типами ↗
3. __lt__ и functools.total_ordering: порядок без лишнего кода ↗
4. __hash__: почему изменяемые объекты опасны как ключи dict ↗
5. copy и deepcopy: поверхностная и глубокая копия ↗
6. Копирование объектов с вложенным состоянием ↗
7. Value object: когда равенство важнее идентичности ↗

Модуль 9. Контейнеры, итераторы и контекстные менеджеры

7 уроков
1. __iter__ и __next__: ручной итератор ↗
2. Генераторный __iter__: простой способ сделать объект… ↗
3. __getitem__ и срезы: доступ по индексу и ключу ↗
4. __setitem__ и __delitem__: изменяемый контейнер ↗
5. collections.abc: проверяем контракт контейнера ↗
6. __enter__ и __exit__: объект в конструкции with ↗
7. Контекстный менеджер для безопасной временной настройки ↗

Модуль 10. Наследование без ловушек

7 уроков
1. Наследование: отношение is-a и цена неправильной иерархии ↗
2. Переопределение методов и расширение поведения ↗
3. super(): зачем он нужен и как не сломать цепочку вызовов ↗
4. MRO: порядок разрешения методов ↗
5. Множественное наследование и mixin-классы ↗
6. Хрупкая базовая модель: когда наследование начинает мешать ↗
7. Композиция против наследования на практическом примере ↗

Модуль 11. Абстракции: ABC, Protocol и duck typing

7 уроков
1. Duck typing: если объект ведёт себя как нужный, этого часто… ↗
2. Абстрактные базовые классы и модуль abc ↗
3. @abstractmethod: обязательные методы наследников ↗
4. Protocol: структурная типизация в современном Python ↗
5. runtime_checkable: когда нужна проверка во время выполнения ↗
6. Интерфейс репозитория задач: ABC или Protocol ↗
7. Как не превратить абстракции в лишнюю бюрократию ↗

Модуль 12. Dataclasses, enum и value objects

7 уроков
1. @dataclass: когда класс описывает данные ↗
2. default_factory: безопасные значения по умолчанию ↗
3. frozen dataclass: иммутабельность и честный hash ↗
4. __post_init__: проверка инвариантов после генерации __init__ ↗
5. slots=True: экономия памяти и запрет случайных атрибутов ↗
6. Enum и StrEnum: ограниченный набор состояний ↗
7. Модель TaskStatus и TaskId как value objects ↗

Модуль 13. Типизация ООП-кода

7 уроков
1. Аннотации атрибутов и методов: читаемая сигнатура класса ↗
2. Optional, Union и |: как описывать отсутствующие значения ↗
3. Self: методы, возвращающие текущий тип ↗
4. TypeVar и Generic: обобщённые контейнеры ↗
5. Callable и Protocol для зависимостей ↗
6. final и override: защита намерений в иерархии ↗
7. mypy или pyright как помощник дизайна, а не начальник ↗

Модуль 14. Исключения и устойчивые интерфейсы

7 уроков
1. Исключение как объект: базовая модель try и raise ↗
2. Иерархия пользовательских исключений ↗
3. ValueError, TypeError и domain errors: что выбирать ↗
4. Цепочки исключений: raise from и сохранение причины ↗
5. Контекст ошибки: как дать пользователю полезное сообщение ↗
6. ExceptionGroup: несколько ошибок в пакетной операции ↗
7. Ошибки в API класса: где проверять и где доверять ↗

Модуль 15. Композиция и зависимости

7 уроков
1. Композиция: объект владеет другими объектами ↗
2. Агрегация: объект использует чужой жизненный цикл ↗
3. Dependency injection простыми словами ↗
4. Конструктор как место явных зависимостей ↗
5. Фейки и стабы как причина не создавать зависимости внутри метода ↗
6. Сервис уведомлений: интерфейс, реализация и подмена ↗
7. Границы модулей: почему меньше импортов — чище дизайн ↗

Модуль 16. Паттерны проектирования в Python-стиле

7 уроков
1. Паттерн Strategy: заменяем ветвления объектом поведения ↗
2. Паттерн Factory Method: создаём объекты по намерению ↗
3. Паттерн Adapter: подключаем чужой интерфейс ↗
4. Паттерн Command: действие как объект ↗
5. Паттерн Observer: уведомления без жёсткой связи ↗
6. Паттерн Template Method: общий алгоритм и изменяемые шаги ↗
7. Паттерны, которые в Python часто заменяются функциями ↗

Модуль 17. Тестирование объектного кода

7 уроков
1. Что тестировать у класса: публичное поведение, а не внутренности ↗
2. pytest для объектной модели: arrange, act, assert ↗
3. Фикстуры: читаемая подготовка объектов ↗
4. Проверка исключений и сообщений ↗
5. Mock против fake: где имитация помогает, а где вредит ↗
6. Контрактные тесты для нескольких реализаций интерфейса ↗
7. Регрессионный тест перед рефакторингом ↗

Модуль 18. Рефакторинг legacy ООП-кода

7 уроков
1. Code smells в классах: God object, data class, feature envy ↗
2. Extract class: выделяем ответственность ↗
3. Extract method и move method: переносим поведение туда, где… ↗
4. Primitive obsession: заменяем строки и числа value objects ↗
5. Replace conditional with polymorphism: убираем длинные if ↗
6. Strangler-подход к переписыванию старой модели ↗
7. Как сохранить поведение и не сломать пользователей класса ↗

Модуль 19. Производительность, память и конкурентность объектов

7 уроков
1. Стоимость объекта в Python: __dict__, ссылки и накладные расходы ↗
2. __slots__: когда экономия памяти оправдана ↗
3. weakref: ссылки, которые не удерживают объект ↗
4. Кэширование свойств: cached_property и ручной cache ↗
5. Потокобезопасность объекта: shared state и Lock ↗
6. Async-объекты: ресурсы, await и жизненный цикл ↗
7. Профилирование перед оптимизацией: что измерять ↗

Модуль 20. Архитектура приложения и итоговый проект

7 уроков
1. Слои приложения: domain, application, infrastructure ↗
2. Entity, value object и service в Python-проекте ↗
3. Repository и Unit of Work без усложнения ↗
4. Порты и адаптеры: как отделить домен от файлов и сети ↗
5. Плагинная архитектура: регистрация обработчиков ↗
6. Итоговый проект: объектная система задач с уведомлениями ↗
7. Дорожная карта дальше: DDD, архитектура, фреймворки и open… ↗