Курс 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"
- Подсказки при вводе данных в Python
- Перегрузка операторов в Python
- Namedtuple в Python
- Хранение переменных в словаре.
- Методы в Python
- Объединение списков в Python.
- Объединение словарей в Python
- Подсчет вхождений элементов
- Уникальность ключей в словаре
- Работа с областями видимости переменных
- Область видимости переменных
- Импорт классов из другого файла
- Вызов внешних программ в Python с помощью sh
- Метод add для класса Vector
- Создание треугольника Паскаля
- Присоединение элементов коллекции
- Участие в сообществе @selectel
- Использование defaultdict в Python
- Профилирование кода
- Работа с библиотекой xkcd
- Возврат нескольких значений
- Удаление специальных символов с помощью re.sub
- Генератор чисел Фибоначчи
- Оптимизация гиперпараметров с Scikit Optimize
- Работа с дробями в Python
- Эффективная конкатенация строк с использованием join()
- Фильтрация элементов с помощью islice
- Получение текущего времени в Python
- Получение текущей даты в Python
- Работа со стеком в Python
- Многострочные комментарии в Python
- Работа с CSV файлами
- OrderedDict — упорядоченный словарь
- Повторение элементов списков
- Форматирование заголовков в Python
- Глобальные переменные в Python
- Pretty-printing JSON в Python
- Получение значений из словарей
- Модуль inspect
- Замена символов в Python
- Antigravity модуль
- Генератор бросков кубиков
- Асинхронный код в Python
- Разделение строки в Python
- Использование html-скриптов в Jupyter Notebook
- Функции any() и all() в Python
- Метод join() для объединения элементов строки
- Фильтры Pillow: NEAREST, BILINEAR, BICUBIC















