Курс Python → Декораторы в Python

Декоратор @classmethod используется для создания методов класса, которые могут быть вызваны на уровне класса, а не на уровне экземпляра. Это означает, что метод, декорированный @classmethod, получает первым аргументом ссылку на класс, а не на экземпляр. Этот декоратор часто используется для создания альтернативных конструкторов или методов, которые работают с классом в целом, а не с конкретным экземпляром.

Декоратор @staticmethod также используется для создания методов класса, но в отличие от @classmethod, он не получает ссылку на класс или экземпляр в качестве первого аргумента. Это означает, что статический метод не имеет доступа к атрибутам класса или экземпляра и обычно используется для группирования функциональности, связанной с классом, но не зависящей от конкретных данных.

Декоратор @property используется для создания свойств объекта, которые могут быть доступны для чтения, записи или удаления, но выглядят как обычные атрибуты объекта. Это позволяет определить логику доступа к этим свойствам, например, проверку значений перед их установкой или выполнение дополнительных действий при чтении или удалении свойства.


class MyClass:
    def __init__(self, x):
        self.x = x

    @property
    def squared_x(self):
        return self.x ** 2

    @classmethod
    def class_method(cls, y):
        return f'Class method called with argument {y}'

    @staticmethod
    def static_method(z):
        return f'Static method called with argument {z}'

obj = MyClass(5)
print(obj.squared_x)
print(MyClass.class_method(10))
print(MyClass.static_method(15))

В приведенном примере мы создаем класс MyClass с использованием декораторов @property, @classmethod и @staticmethod. Метод squared_x определен как свойство только для чтения, метод class_method является методом класса, а static_method — статическим методом. Эти декорированные методы могут быть использованы для управления доступом к атрибутам объекта, выполнения дополнительной логики или создания альтернативных конструкторов.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Импорт модуля из другого каталога
  2. Работа с timedelta в Python
  3. Модуль itertools: комбинации и перестановки
  4. Проверка версии Python
  5. Генераторные функции в Python
  6. Enum в Python: создание и использование перечислений
  7. Проблемы с dict в Python
  8. OrderedDict — упорядоченный словарь
  9. Сглаживание списка
  10. Установка и использование pyshorteners
  11. Python: динамическая типизация и проверка типов
  12. Разделение строки с помощью split()
  13. Форматирование чисел в Python
  14. Отладка кода
  15. Изучение объектов с помощью dir()
  16. Использование модуля math
  17. Python Метод sleep() времени
  18. Вычисление логарифмов в Python
  19. Блок try…finally в Python
  20. Работа с индексами списков
  21. Тестирование модели в PyTorch
  22. Управление контекстом с помощью декоратора contextmanager
  23. Безопасные SQL-запросы в Python 3.11
  24. Комплексные числа в Python
  25. Работа с timedelta
  26. Метод get() в Python
  27. Оптимизация памяти в Python
  28. Обновление и получение данных в SQLite
  29. Оператор Walrus: правильное использование
  30. Передача аргументов в Python
  31. Логирование с Loguru
  32. Основные операции с библиотекой Numpy
  33. Настройка вывода в Numpy
  34. Сравнение строк в Python
  35. Метод ipow для возведения в степень
  36. Подписка на SelectelNews в Twitter
  37. Декоратор total_ordering для сравнения объектов
  38. Вывод баннеров
  39. Передача неизвестных аргументов в Python.
  40. Удаление ресурса в Python
  41. Работа со словарями
  42. Переопределение метода xor в Python
  43. Работа с YAML в Python
  44. Виртуальные среды в Python
  45. Работа с модулем cmath
  46. Тайное преобразование типа ключа

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