Семнадцатая сводная сессия повторяет две большие темы: декораторы функций и базовые концепции ООП — классы, объекты, __init__, поля, методы и self.
Декоратор оборачивает функцию, добавляя поведение до и после вызова.
Чтобы декоратор работал с любыми функциями, обёртка принимает *args, **kwargs и возвращает результат.
@functools.wraps сохраняет имя и документацию оригинальной функции.
Декоратор-фабрика — это функция, которая принимает аргументы и возвращает декоратор.
Несколько декораторов применяются снизу вверх.
Класс — шаблон, объект — экземпляр. __init__ задаёт начальное состояние через self.
Что запомнить: обёртка должна «прозрачно» заменять исходную функцию — принимать те же аргументы, возвращать тот же результат и по возможности сохранять её метаданные. В ООП self связывает данные с конкретным объектом.
Частая ошибка: забыть вернуть результат из обёртки или не добавить self в метод класса.
О чём этот урок
Это семнадцатая сводная сессия курса. Мы повторим ключевые идеи уроков 64–66: декораторы (аргументы, возвращаемые значения, functools.wraps, фабрики, цепочки декораторов) и базы объектно-ориентированного программирования (класс, объект, __init__, поля, методы, self). Урок построен как интерактивный опрос с примерами, заданиями и разбором типичных ошибок.
Что повторим
Где и зачем применяются декораторы: логирование, измерение времени, кеширование, retry, валидация.
Как принимать и передавать аргументы через *args, **kwargs.
Как правильно возвращать результат декорируемой функции.
Зачем нужен functools.wraps и что происходит без него.
Декораторы с параметрами (фабрики) и их порядок применения.
Основы ООП: класс как шаблон, объект как экземпляр, различие с функциональным подходом.
Магический метод __init__, параметр self, поля, методы и атрибуты.
Создание объектов, доступ к полям и изменение состояния.
Современные практики: аннотации типов, functools.wraps, dataclasses, @property, PEP 8.