Курс 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. Сортировка с помощью параметра key
  2. Удаление файлов и папок в Python
  3. Проверка надежности пароля на Python
  4. Создание namedtuple списком полей
  5. Библиотека wikipedia для Python
  6. Метод join() для объединения элементов строки
  7. Анонимные функции Lambda
  8. Динамическая типизация в Python
  9. Установка random seed в Python
  10. Работа с CSV файлами в Python
  11. Поиск самого длинного слова в списке с использованием max()
  12. Lambda Functions in Python
  13. Генераторы в Python
  14. Избегание циклических зависимостей классов в Python
  15. Переопределение метода sub
  16. Разделение строк в Python
  17. Работа с кортежами в Python
  18. Лямбда-функции для min/max
  19. Управление асинхронными задачами с помощью Semaphore
  20. Измерение времени выполнения кода
  21. Определение наиболее частого элемента с помощью collections.Counter
  22. Поиск кода
  23. Удаление эмодзи с помощью pandas
  24. Операции с числами в Python
  25. Создание лямбда-функций
  26. Базовые объекты Python
  27. Работа с кортежами в Python
  28. Использование super() в Python
  29. Concrete Paths в Python
  30. Цепные операции в Python
  31. Проверка элемента в множестве.
  32. Оптимизация гиперпараметров в Python
  33. Управление экспортом элементов
  34. Освобождение памяти в Python
  35. F-строки в Python 3.8
  36. Проверка версии Python
  37. Множественное присваивание в Python
  38. Кортеж в Python: создание, доступ, изменение
  39. Метод bool() в Python
  40. Извлечение аудио из видео
  41. Библиотека sh: использование команд bash в Python
  42. Передача параметров в Python
  43. Поиск всех индексов подстроки
  44. Работа с часовыми поясами в Python.
  45. Dict Comprehension в Python
  46. Операторы сравнения в Python
  47. Возвращение нескольких значений через кортеж или класс

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