Курс 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. Разработка Telegram-ботов
  2. Изменяемые и неизменяемые объекты
  3. Работа со строками в Python
  4. Сравнение неупорядоченных списков
  5. Генераторы списков в Python
  6. Поиск наиболее частого элемента
  7. Python: Splat-оператор и splatty-splat
  8. Установка Git и AWS CLI
  9. Проверка типа данных
  10. Операторы увеличения и уменьшения в Python
  11. Настройка шрифта и цвета в Tkinter
  12. Поиск анаграмм с Counter
  13. Метод getitem для доступа к элементам последовательности
  14. Проверка надежности пароля на Python
  15. Python: отличительная особенность — отступы
  16. Названия переменных
  17. Логирование с Loguru
  18. Отправка HTTP-запросов в Python
  19. Работа с часовыми поясами в Python.
  20. Работа с enumerate()
  21. Аннотации типов в Python
  22. Разделение списка на гнппы
  23. Enum в Python
  24. Оболочка Python
  25. Определение локальных переменных в Python
  26. Запуск Python из интерпретатора
  27. Кортеж в Python: создание и использование
  28. Использование type hints
  29. Выражения-генераторы в Python
  30. Операции с кортежами
  31. Monkey Patching в Python
  32. Анонимные функции Lambda
  33. Создание словаря в Python
  34. Python: динамическая типизация и проверка типов
  35. Вставка переменных в шаблоны Flask
  36. Удаление специальных символов с помощью re.sub
  37. Поиск email
  38. Замыкания в Python
  39. Блок else в циклах Python
  40. Работа с множествами в Python
  41. Вычисление времени выполнения
  42. Проверка элемента в множестве.
  43. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  44. Отображение HTML кода в Python
  45. Добавление элемента в список.

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