Курс 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. Переворот строки с использованием цикла
  3. Работа с timedelta в Python
  4. Работа с изображениями PIL
  5. Метод rxor для операции побитового исключающего «или»
  6. Работа с файлами в Python
  7. Метод __irshift__ для побитового сдвига вправо
  8. Перетасовка списков в Python
  9. Транспонирование 2D-массива с помощью zip
  10. Официальный канал Python в Telegram
  11. Оператор in для Python
  12. Навыки Python: строки, типы данных
  13. Библиотека wikipedia для Python
  14. Отладка регулярных выражений в Python
  15. Обработка исключений в Python
  16. Замыкания в Python
  17. Модуль math: константы π и e
  18. Объединение списков в строку
  19. split() без разделителя
  20. Инверсия списка и строки в Python
  21. Подсказки при вводе данных в Python
  22. Управление импортом в Python
  23. Секреты Python
  24. Оператор is в Python
  25. Экранирование символов в Python
  26. Объединение строк с помощью метода join
  27. Управление экспортом элементов
  28. Распаковка значений в Python
  29. Путь к интерпретатору Python
  30. Избегание циклических зависимостей классов в Python
  31. Оператор обр. импликации
  32. Создание директории в Python
  33. Объединение списков в Python
  34. Обновление множества в Python
  35. Проверка типов с помощью isinstance
  36. Нахождение разницы между списками в Python
  37. Именованные срезы в Python
  38. Установка и использование howdoi
  39. Запуск Python из интерпретатора
  40. Преобразование списка в словарь через генератор
  41. Использование html-скриптов в Jupyter Notebook
  42. Повторение и перенос строки
  43. Переопределение метода xor в Python
  44. Defaultdict в Python
  45. Отладка в Python
  46. globals и locals
  47. Оператор умножения для вектора

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