Введение в декораторы
Часть раздела Object Oriented Programming путешествия по Python на Coddy — урок 9 из 64.
Декораторы — это способ изменять или расширять функции и классы, не меняя их исходный код. Они используют символ @.
Вот пример простого декоратора:
def my_decorator(func):
def wrapper():
print("Before function runs")
func()
print("After function runs")
return wrapperПримените декоратор с помощью @:
@my_decorator
def say_hello():
print("Hello!")Вызовите декорированную функцию:
say_hello()Вывод:
Before function runs
Hello!
After function runs@my_decorator эквивалентно записи:
def say_hello():
print("Hello!")
say_hello = my_decorator(say_hello)Но синтаксис @ намного чище и легче для чтения.
Ключевой момент: Декораторы оборачивают функции, чтобы добавить дополнительную функциональность без изменения исходного кода функции
Шпаргалка
Декораторы изменяют или расширяют функции без изменения их исходного кода, используя символ @.
Базовая структура декоратора:
def my_decorator(func):
def wrapper():
print("Before function runs")
func()
print("After function runs")
return wrapperПримените декоратор с помощью @:
@my_decorator
def say_hello():
print("Hello!")Синтаксис @my_decorator эквивалентен:
say_hello = my_decorator(say_hello)Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Object Oriented Programming
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — Простой калькулятор4Наследование
Базовое наследованиеФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовИтоги — Иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy5Полиморфизм
Снова о переопределении методовУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовИтоги — Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыИтоги — Менеджер банковского счета6Инкапсуляция
Public, Protected, Private члены классаМодификаторы доступаСокрытие данныхДекораторы property: продвинутый уровеньИтоги: Система учета студентов12Проект: Управление библиотекой
Обзор проектаКлассы Book и User