Урок 67. Summary session 17

📁 Блок: Python Fundamentals / Обзор ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#def #return #functools #class #basicconfig #add #print #import #upper #range #open #read #for #in #try #except #as #with #if #pass #property #from #raise #continue #time

⚡ Кратко: суть урока

Семнадцатая сводная сессия повторяет две большие темы: декораторы функций и базовые концепции ООП — классы, объекты, __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.

📚 Что повторить перед изучением

🎯 Что изучать дальше

  • → Урок 68 — Атрибуты объекта и класса
  • Попробуйте написать собственный декоратор для логирования или измерения времени.
  • Создайте несколько классов для предметной области, которая вам интересна: библиотека, магазин, банк.