Как использовать декораторы классов в Python?

Ответ

Декоратор класса в 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), для автоматической регистрации классов в реестре или для добавления метаданных.
  • Декоратор должен вернуть класс (исходный, модифицированный или новый), который заменит исходный в точке определения.