Курс 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
  2. Использование обратной косой черты в f-строках
  3. Бинарный поиск
  4. Codecademy в Telegram
  5. Генераторы в Python
  6. Получение обратного списка чисел
  7. Создание класса в Python
  8. Избегание изменяемых аргументов
  9. Объединение коллекций в Python
  10. Форматирование строк в Python
  11. Оператор «моржа» (Walrus Operator)
  12. *args и **kwargs в Python
  13. Метод ior для битовых операций
  14. Выражения-генераторы в Python
  15. Объединение итераторов
  16. Множественные конструкторы в Python
  17. Работа с файлами в Python
  18. Обратное распространение ошибки
  19. Поиск самого длинного слова в списке с использованием max()
  20. Создание лямбда-функций
  21. Закрытие файла в Python
  22. Форматирование строк в Python
  23. Асинхронный код в Python
  24. Модуль array: создание и использование массивов
  25. Отправка поздравлений по дню рождения
  26. Пространство имен в Python
  27. Проверка условий: all и any
  28. Объединение кортежей в Python
  29. Метод rsub для пользовательских чисел
  30. Сумма элементов списка
  31. Управление импортом в Python
  32. Удаление элементов из списка в Python
  33. Просмотр внешних файлов в %pycat
  34. Логические значения в Python
  35. Именованные кортежи в Python
  36. Работа с комбинациями в Python.
  37. Создание копии итератора
  38. Удаление специальных символов с помощью re.sub
  39. Тип CodeType в Python.
  40. Сравнение def и lambda функций в Python
  41. Принцип одной функции
  42. Настройка шрифта и цвета в Tkinter
  43. Concrete Paths в Python
  44. Python UserString — создание подклассов строк

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