Курс 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. Перегрузка операторов в Python
  3. Namedtuple в Python
  4. Хранение переменных в словаре.
  5. Методы в Python
  6. Объединение списков в Python.
  7. Объединение словарей в Python
  8. Подсчет вхождений элементов
  9. Уникальность ключей в словаре
  10. Работа с областями видимости переменных
  11. Область видимости переменных
  12. Импорт классов из другого файла
  13. Вызов внешних программ в Python с помощью sh
  14. Метод add для класса Vector
  15. Создание треугольника Паскаля
  16. Присоединение элементов коллекции
  17. Участие в сообществе @selectel
  18. Использование defaultdict в Python
  19. Профилирование кода
  20. Работа с библиотекой xkcd
  21. Возврат нескольких значений
  22. Удаление специальных символов с помощью re.sub
  23. Генератор чисел Фибоначчи
  24. Оптимизация гиперпараметров с Scikit Optimize
  25. Работа с дробями в Python
  26. Эффективная конкатенация строк с использованием join()
  27. Фильтрация элементов с помощью islice
  28. Получение текущего времени в Python
  29. Получение текущей даты в Python
  30. Работа со стеком в Python
  31. Многострочные комментарии в Python
  32. Работа с CSV файлами
  33. OrderedDict — упорядоченный словарь
  34. Повторение элементов списков
  35. Форматирование заголовков в Python
  36. Глобальные переменные в Python
  37. Pretty-printing JSON в Python
  38. Получение значений из словарей
  39. Модуль inspect
  40. Замена символов в Python
  41. Antigravity модуль
  42. Генератор бросков кубиков
  43. Асинхронный код в Python
  44. Разделение строки в Python
  45. Использование html-скриптов в Jupyter Notebook
  46. Функции any() и all() в Python
  47. Метод join() для объединения элементов строки
  48. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC

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