Курс 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. Цикл for с enumerate() в Python
  2. Особенности запятых в Python
  3. Безопасный доступ к значениям словаря
  4. Python itertools combinations() — группировка элементов
  5. Обработка данных в Python
  6. Математические функции в Python
  7. Оператор * в Python
  8. Создание пользовательской коллекции в Python
  9. Наследование в программировании
  10. Создание директории в Python
  11. Профилирование с Pandas
  12. PEP-401: оператор
  13. Pretty-printing JSON в Python
  14. Параллельные вычисления в Python
  15. Метод сравнения объектов в Python
  16. Работа с итераторами через срезы
  17. Объединение списков с помощью zip
  18. Удаление дубликатов из списка
  19. Установка и использование emoji
  20. Переворот строки с использованием цикла
  21. Синхронизация доступа к ресурсам
  22. Глобальные переменные в Python
  23. Методы split() и join() — Python строк.
  24. Функции в Python: создание и вызов
  25. Атрибуты массивов в Numpy
  26. Проверка дублей в списке.
  27. Декоратор total_ordering для класса Point
  28. Избегайте изменяемых аргументов
  29. Функция zip() в Python
  30. ChainMap.new_child() — добавление нового словаря
  31. Импорт модуля из другого каталога
  32. Обработка ошибок в Python
  33. Объединение списков в Python.
  34. Уникальность ключей в словаре
  35. Сглаживание списка
  36. Область видимости переменных
  37. Передача аргументов через **arguments
  38. Метод title() в Python
  39. Работа с WindowsPath()
  40. Вычисление фазы комплексного числа
  41. Поиск наиболее частого элемента списке
  42. Генератор данных в Keras
  43. Работа с библиотекой requests
  44. Хранение данных с помощью dataclasses
  45. Декораторы классов
  46. Метод get для словарей

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