Курс 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. Запрос пароля с помощью getpass
  2. Область видимости переменных
  3. Сравнение строк в Python
  4. Оператор «and» в Python
  5. Переименование файлов в Python
  6. Работа со строками в Python
  7. Комментарии в Python
  8. Функция sleep() в Python
  9. Переворот списка в Python
  10. Скрытие вывода данных
  11. Вызов внешних программ в Python с помощью sh
  12. Отправка HTTP-запросов в Python
  13. Метод __complex__ в Python
  14. Обработка StopIteration в Python
  15. Синхронизация потоков с time.sleep()
  16. Получение значений из словарей
  17. Создание namedtuple списком полей
  18. Поиск частого элемента
  19. Тестирование с responses
  20. Принципы LSP и ISP в Python
  21. Использование двоеточия в Python
  22. Преобразование данных в Python
  23. Повторение элементов в Python
  24. Переопределение метода __lshift__
  25. Статическая типизация в Python
  26. Создание детектора плагиата
  27. Преобразование списка в словарь через генератор
  28. Создание веб-приложения с Flask
  29. Метод remove() для удаления элемента из списка
  30. Использование html-скриптов в Jupyter Notebook
  31. Многоточие в Python
  32. Игра «Угадывание чисел»
  33. Поиск индексов подстроки
  34. Работа с модулем glob в Python
  35. Оператор in в Python
  36. Удаление специальных символов с помощью re.sub
  37. Метод сравнения объектов в Python
  38. Тест скорости набора текста на Python
  39. Изменение логики работы с временем
  40. Работа с атрибутом dict
  41. Настройка Cron
  42. split() без разделителя
  43. Работа с библиотекой requests
  44. Работа с Event() в threading
  45. Создание вложенного генератора
  46. Подсчет частоты элементов с Counter

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