Курс 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. Создание списка через цикл
  2. Нахождение максимального значения и его индекса в списке
  3. Отступы в Python
  4. Импорт в Python: список all
  5. Обработка исключений в Python 3
  6. Работа с классами данных
  7. Отладка в Python
  8. Библиотека schedule: планировщик задач
  9. Получение размера объекта с sys.getsizeof()
  10. Тернарный оператор в Python
  11. Создание пар из последовательностей
  12. Работа с массивами в Python
  13. Функции all() и any() в Python
  14. ROT13 Шифр Цезаря в Python
  15. Форматирование заголовков в Python
  16. Отслеживание выполнения программы с библиотекой tqdm
  17. Очистка данных в Python
  18. Контекстный менеджер в Python
  19. Обработка исключений в Python
  20. Возврат нескольких значений
  21. Python: возвращение нескольких значений
  22. Работа с Telegram API на Python
  23. Генератор данных в Keras
  24. Назначение максимального и минимального значения переменной в Python.
  25. Потоковый ввод в Python
  26. Измерение потребления памяти при сортировке
  27. Работа с геоданными с помощью geopy
  28. Форматирование строк с % в Python
  29. Замыкания в Python
  30. Замена подстроки
  31. Изучение объектов с помощью dir()
  32. Анонимные функции Lambda
  33. Функция enumerate в Python
  34. Метод count в Python: почему count(», ») возвращает 4?
  35. Оператор распаковки в Python
  36. Структуры данных в Python
  37. 9 уловок для чистого кода
  38. Конкатенация строк с join() в Python
  39. Объединение, распаковка и деструктуризация
  40. Загрузка постов Instagram
  41. Работа с кортежами
  42. Принципы программирования
  43. Функция zip() — объединение последовательностей
  44. Работа со словарями Python
  45. Вывод символов строки в Python
  46. Выключение компьютера с помощью Python
  47. Модуль xkcd: добавление юмора в Python
  48. Получение текущего времени в Python

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