Курс 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 OrderedDict и fromkeys() — работа с словарями
  2. Возвращение нескольких значений
  3. Подсчет элементов с помощью Counter из collections
  4. Работа с срезами в Numpy
  5. Определение индекса элемента списка
  6. Метод join() для объединения элементов строки
  7. Переопределение метода __or__()
  8. Измерение времени выполнения кода с помощью time
  9. JMESPath в Python
  10. Присоединение элементов коллекции
  11. Приближение чисел в Python
  12. Перехват исключений в Python
  13. Нарезка списков в Python
  14. Преобразование регистра строк
  15. Оптимизация памяти с помощью __slots__
  16. Создание детектора плагиата
  17. %pinfo: получение информации об объекте
  18. Логический оператор «and» в Python
  19. Генераторы в Python
  20. Проверка условий: all и any
  21. Исправление ошибки NameError
  22. Функция sleep() в Python
  23. Объединение словарей в Python
  24. Преобразование списка в словарь через генератор
  25. Создание задания в Cron
  26. Метод rename() для переименования файлов и каталогов
  27. Retrying в Python: повторные вызовы
  28. Измерение времени выполнения кода в Python
  29. Декораторы в Python
  30. Условное добавление элементов в список
  31. Нан-рефлексивность в Python
  32. Удаление элементов из списка в Python
  33. Генераторы в Python
  34. Итераторы в Python
  35. Поиск всех индексов подстроки
  36. Объединение Python и Shell
  37. Методы и функции в Python
  38. Работа с CSV файлами
  39. Методы Python для работы с данными
  40. Множественное присваивание в Python
  41. Модуль os: работа с файлами и папками
  42. Любовь к Python
  43. TypedDict для kwargs в Python 3.12
  44. Генераторы в Python
  45. Создание даты из строки ISO
  46. Работа с контекстными переменными

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