Курс 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. Отправка HTTP-запросов в Python
  2. Метод rrshift для пользовательских объектов
  3. Переопределение метода divmod
  4. Операторы увеличения и уменьшения переменной
  5. Применение функции map() в Python
  6. Переопределение метода __and__
  7. Список и кортеж в Python
  8. Пространство имен в Python
  9. Исключение NotImplementedError
  10. Виртуальное окружение Python
  11. Добавление элемента к кортежу
  12. Установка и использование pyshorteners
  13. Сортировка данных с лямбда-функциями
  14. Импорт и использование модулей в Python
  15. Тест скорости набора текста на Python
  16. Создание новой даты в Python
  17. Преобразование вложенного списка
  18. Defaultdict в Python
  19. Функция zip() в Python
  20. Получение текущей даты в Python
  21. Сглаживание списка
  22. Управление памятью в Python
  23. Генерация строк с .join()
  24. Создание словаря через dict comprehension
  25. Замена подстроки
  26. Добавление элементов в список: append() vs extend()
  27. Обновление данных через PUT запрос
  28. Переменная Шредингера
  29. Разделение строк методом split()
  30. Особенности ключей словаря в Python
  31. Управление мышью и клавиатурой с Pyautogui
  32. Особенности множеств в Python
  33. Установка Home Assistant
  34. Удаление ключа из словаря в Python
  35. Руководство по Pymorphy2
  36. Метод __iand__ для пользовательских классов
  37. Библиотека sh: удобные команды терминала
  38. Python enumerate() для работы с индексами
  39. Основные операции с Numpy
  40. Работа с файлами в Python
  41. Быстрый поиск кода
  42. Проверка условий: all и any
  43. Вывод сложных структур данных с помощью pprint

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