Курс на 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…