@property - для создания управляемых атрибутов, где получение, установка или удаление значения можно перехватывать и изменять поведение.
@staticmethod - для методов класса, которым не нужен доступ ни к экземпляру, ни к классу.
@classmethod - для методов класса, которые получают ссылку на сам класс в качестве первого аргумента (обычно cls).
@lru_cache из модуля functools - для кеширования результатов вызова функций на основе их аргументов.
Пользовательские декораторы - для логирования, авторизации, измерения времени выполнения.
Пример использования @property:
python
Пример использования @staticmethod:
python
Пример использования @classmethod:
python
Пример использования @lru_cache:
python
Пример пользовательского декоратора для логирования:
python