Курс 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. Структура данных словарь в Python
  4. Частичное применение функций в Python
  5. Импорт модулей в Python 3.12
  6. Уникальность ключей в словаре
  7. Перевод текста с Python Translator
  8. Работа с областями видимости переменных
  9. Преобразование символов с помощью map
  10. Работа с рекламными данными в Pandas
  11. Модуль functools в Python
  12. Оценка точности модели
  13. Управление экспортом элементов
  14. Оптимизация строк в Python
  15. Итераторы в Python
  16. Приближение чисел в Python
  17. Функции all и any в Python
  18. Создание копии списка в Python
  19. JMESPath в Python
  20. Метод index() в Python
  21. Копирование объектов в Python
  22. Оптимизация параметров в Python
  23. Метод ifloordiv для пользовательских классов
  24. Функция reduce() в Python
  25. Beautiful Soup — извлечение данных из HTML
  26. Хэш-функции и метод цепочек
  27. Методы и функции в Python
  28. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  29. Именованные срезы в Python
  30. Расчет времени выполнения программы
  31. Использование двоеточия в Python
  32. Вывод с переменной через запятую
  33. Работа с deque из collections
  34. Flask: создание веб-приложений
  35. Секреты Python
  36. Работа с контекст-менеджером «with»
  37. Оптимизация памяти в Python
  38. Перебор элементов списка в Python
  39. Блок try-except-else
  40. Pillow: работа с изображениями
  41. Функция enumerate() — Python
  42. Удаление дубликатов с помощью множеств
  43. Удаление пробелов методом translate()
  44. Запуск внешнего кода в Jupyter
  45. Измерение времени выполнения кода с использованием time
  46. Регулярные выражения: метод match
  47. Оператор Walrus в Python 3.8

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