Курс 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. Функция enumerate() в Python
  2. Pillow: работа с изображениями
  3. Python Метод del.
  4. Enum в Python
  5. Курсы Яндекс Практикум
  6. Изучение объектов с помощью dir()
  7. Удаление элемента по индексу в Python
  8. Работа с JSON в Python
  9. Нахождение разницы между списками в Python
  10. Парсинг веб-страниц с Beautiful Soup
  11. Основы работы с базами данных в Python
  12. Модуль inspect: получение информации о объектах
  13. Инициализация объекта
  14. Распаковка с оператором *
  15. Кортеж в Python: создание и использование
  16. Вычисление логарифмов в Python
  17. Разделение строки на подстроки в Python
  18. Python Тесты и Гайды
  19. Сериализация и десериализация объектов
  20. Метод join() для объединения элементов
  21. Создание директории в Python
  22. Методы Python для работы с данными
  23. Итераторы в Python
  24. Удаление файлов и папок в Python
  25. Основы слова
  26. Цикл for в Python
  27. Создание файла с проверкой ошибки
  28. Счетчик ссылок в Python
  29. Работа с CSV файлами
  30. Преобразование строк в числа с плавающей запятой
  31. Умножение строк и списков
  32. Функции высшего порядка в Python
  33. Декоратор total_ordering для класса Point
  34. Работа с Path в Python
  35. Создание словаря и множества
  36. Python: динамическая типизация и проверка типов
  37. Списки в Python: основы
  38. Функция all() в Python
  39. Асинхронное программирование с asyncio
  40. f-строки в формате строк
  41. Форматирование строк в Python
  42. Переворот строки
  43. Concrete Paths — метод .with_suffix()

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