Ответ
Декоратор класса в Python — это функция, которая принимает класс, изменяет его и возвращает изменённую версию. Это мощный инструмент для модификации поведения класса, добавления функциональности, регистрации классов или применения проверок во время его определения.
Пример:
def add_method(cls):
# Декоратор добавляет новый метод 'hello' к классу
def hello(self):
return f"Hello from {self.__class__.__name__}! I'm a new method!"
cls.hello = hello
return cls
@add_method
class MyClass:
pass
obj = MyClass()
print(obj.hello()) # Выведет: Hello from MyClass! I'm a new method!
Применение и особенности:
- Декоратор выполняется один раз, при определении класса, до создания его экземпляров.
- Он может добавлять, удалять или изменять методы и атрибуты класса.
- Часто используется для реализации паттернов (например, Singleton), для автоматической регистрации классов в реестре или для добавления метаданных.
- Декоратор должен вернуть класс (исходный, модифицированный или новый), который заменит исходный в точке определения.