Курс 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. Вызов внешних программ в Python с помощью sh
  2. Проверка на палиндром
  3. Хэш-функции и метод цепочек
  4. Логирование с Logzero
  5. Удаление файлов в Python
  6. Множественное присваивание в Python
  7. Работа с аргументами командной строки
  8. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  9. Удаление файлов и папок в Python
  10. Измерение времени выполнения кода
  11. Метод __getitem__ в Python
  12. Метод join() для объединения строк
  13. Генераторы и сеты в Python
  14. Создание словарей и множеств в Python
  15. Показ всплывающих окон Tkinter
  16. Удаление символа из строки
  17. Срез в Python
  18. Переменные класса и экземпляра
  19. Объединение, распаковка и деструктуризация
  20. Python: библиотеки и функции
  21. Генераторные функции в Python
  22. Преобразование строк в числа в Python
  23. Основы Python за 14 дней
  24. Замена атрибута в именованном кортеже
  25. Измерение времени выполнения кода с использованием time
  26. Запуск внешнего кода в Jupyter
  27. Создание коллекций из генератора
  28. Работа с эмодзи в Python
  29. Методы обработки строк в Python
  30. Генерация тестовых данных с factory_boy
  31. Импорт в Python: список all
  32. Операторы сравнения в Python
  33. Установка пакета в Python
  34. Модуль os: работа с файлами и папками
  35. Создание вкладок с TKinter
  36. Применение промокода в Много лосося
  37. Оптимизация гиперпараметров в Python
  38. Особенности множеств в Python
  39. Простой калькулятор Python
  40. Удаление ссылок в Python
  41. Оператор in для Python

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