Курс 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. Модуль antigravity: генерация координат
  2. Значения по умолчанию в Python
  3. Замыкания в Python
  4. Удаление ключа из словаря
  5. Python Метод del.
  6. Обход словаря в Python
  7. Подсчет элементов с помощью Counter из collections
  8. Оператор «not» в Python
  9. Нахождение разницы между списками в Python
  10. Создание вложенного генератора
  11. Работа со стеком в Python
  12. Создание новых функций через partial
  13. Логирование с Logzero
  14. Создание списков в Python
  15. Список и кортеж в Python
  16. Модуль xkcd: добавление юмора в Python
  17. Ускорение выполнения кода в Python
  18. IPython и Jupyter Notebook: руководство
  19. Измерение времени выполнения кода
  20. Генераторы в Python
  21. Фильтрация элементов с помощью islice
  22. Подписка на SelectelNews в Twitter
  23. Резервирование символов в Python
  24. Документирование функций в Python
  25. Работа с функцией next() в Python
  26. Методы Python для работы с данными
  27. Создание уникального множества
  28. Профилирование кода на Python
  29. Лямбда-функции для min/max
  30. Работа со строками в Python
  31. Concrete Paths в Python
  32. Аргумент по умолчанию
  33. Регулярные выражения в Python
  34. Генераторы в Python
  35. Создание класса очереди
  36. Оператор «моржа» (Walrus Operator)
  37. Оптимизация памяти с slots
  38. Namedtuple в Python
  39. Объединение, распаковка и деструктуризация
  40. Исключение NotImplementedError
  41. Список переменных с %who
  42. Работа с датой и временем в Python
  43. Генераторы в Python
  44. Логические значения в Python
  45. Объединение списков в Python.

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