Курс Python → Декораторы классов

Декораторы классов — это специальные функции, которые позволяют изменить поведение методов класса без изменения самого класса. Они позволяют добавлять дополнительную функциональность к методам класса, не изменяя их исходный код. Декораторы классов обычно определяются как обычные функции, которые принимают метод класса в качестве аргумента и возвращают новую функцию, которая заменяет исходный метод.

Пример использования декораторов классов можно увидеть на примере декоратора add_hello. Этот декоратор добавляет к методу greet класса MyClass вывод строки «Hello!» перед вызовом самого метода. Для применения декоратора к методу используется синтаксис @add_hello перед определением метода в классе. Теперь при вызове obj.greet() будет выводиться не только обычное приветствие, но и «Hello!».


class MyClass:
    @add_hello
    def greet(self):
        print("Hello, how are you?")

def add_hello(func):
    def wrapper(self):
        print("Hello!")
        func(self)
    return wrapper

obj = MyClass()
obj.greet()

В приведенном примере декоратор add_hello принимает метод greet класса MyClass в качестве аргумента и возвращает новую функцию wrapper, которая добавляет вывод «Hello!» перед вызовом исходного метода. При вызове obj.greet() сначала будет выведено «Hello!», а затем «Hello, how are you?». Таким образом, декоратор add_hello позволяет расширить функциональность метода greet, не изменяя его исходный код.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Создание словарей в Python
  2. Применение промокода в Много лосося
  3. Генераторы в Python
  4. Порядок и длина множеств в Python
  5. Удаление элемента из списка в Python
  6. Работа с OpenCV
  7. Атрибуты класса и экземпляра
  8. Параллельные вычисления в Python
  9. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  10. Работа с классами данных
  11. Реализация операции -= для пользовательского класса
  12. Функция zip() — объединение последовательностей
  13. Потоковый ввод в Python
  14. Итерация по итерируемым объектам
  15. Объединение кортежей в Python
  16. Определение индекса элемента списка
  17. Конкатенация списков в Python
  18. Генераторы в Python
  19. Оператор @ для умножения матриц
  20. Аргумент по умолчанию
  21. Проверка переменных окружения в Python
  22. Цикл for в Python
  23. Метод __iand__ для пользовательских классов
  24. Курс по дообучению ChatGPT
  25. Генерация случайных чисел в Python
  26. Методы HTTP запросов в Flask
  27. Метод hash в Python
  28. Извлечение данных из JSON
  29. Выражения-генераторы в Python
  30. Бинарный поиск
  31. Работа с IP-адресами в Python
  32. Установка и обучение ChatterBot
  33. Нахождение максимального значения и его индекса в списке
  34. Логирование с Loguru
  35. Генерация случайных чисел Python
  36. Работа со строками в Python
  37. Деление в Python
  38. Измерение времени выполнения кода в Python
  39. Статическая типизация в Python
  40. Логический оператор «and» в Python
  41. Генераторы по генератору
  42. Асинхронное программирование с asyncio
  43. Создание итератора
  44. Подсчет элементов в списке с Counter
  45. Преобразование букв в нижний регистр
  46. Хранение переменных в Python.

Marketello читают маркетологи из крутых компаний