Курс 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. Логирование с Loguru
  3. Строки в Python: апострофы и кавычки
  4. Объединение словарей в Python
  5. Генерация UUID в Python
  6. Объединение итераторов
  7. Установка пакета в Python
  8. Сравнение строк в Python
  9. Выбор редактора кода.
  10. Установка и обучение ChatterBot
  11. Функция reduce() из модуля functools
  12. Pretty-printing JSON в Python
  13. Повторение и перенос строки
  14. Функциональное программирование.
  15. Генерация случайных чисел в Python
  16. Работа с кортежами в Python
  17. Расчет времени выполнения программы
  18. 9 уловок для чистого кода
  19. Сравнение def и lambda функций в Python
  20. Передача аргументов в Python
  21. Объединение списков в Python
  22. Извлечение новостей с newspaper3k
  23. Ускорение выполнения кода в Python
  24. Оператор морж в Python 3.8
  25. Оператор «моржа» (Walrus Operator)
  26. Управление User-Agent в Python
  27. Сортировка элементов с OrderedDict
  28. Переопределение метода __or__()
  29. Конструктор в Python
  30. Непрерывная проверка в Python
  31. ChainMap.new_child() — добавление нового словаря
  32. Defaultdict в Python
  33. Распаковка элементов массива
  34. Генератор данных в Keras
  35. Делегирование в Python
  36. Замена символов в Python
  37. Руководство по использованию Colorama
  38. Python enumerate() функции
  39. Выборка чисел
  40. Метод gt в Python
  41. Создание директории в Python
  42. JMESPath в Python
  43. Создание спинбокса в tkinter
  44. Выключение компьютера с помощью Python

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