Курс 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. Умножение строк и списков
  2. Особенности ключей словаря в Python
  3. Разделение строки с регулярными выражениями
  4. Создание словаря через dict comprehension
  5. Инициализация переменных
  6. Блок else в циклах Python
  7. Частичное применение функций в Python
  8. Обработка исключения UnboundLocalError
  9. Создание объекта timedelta
  10. Создание инструмента обнаружения плагиата
  11. Объединение коллекций в Python
  12. Работа со случайными элементами
  13. Декоратор для группы пользователей в Django
  14. Отправка поздравлений по дню рождения
  15. Импорт модуля из другого каталога
  16. Нахождение пересечения множеств
  17. Множественные конструкторы в Python
  18. Разбиение текста в Python
  19. Виртуальное окружение Python
  20. Логические значения в Python
  21. Генерация чисел с range()
  22. Управление IP-адресами через прокси
  23. Python Calendar Usage
  24. Проверка однородности элементов списка
  25. Docstring в Python
  26. Объединение списков с использованием itertools.chain
  27. Python: Фильтрация списков с помощью filter()
  28. Избегайте пустого списка
  29. Python: цикл for и оператор присваивания
  30. F-строки в Python
  31. Добавление элемента в список.
  32. Ограничение итераций в Python
  33. Обезопасьте ввод данных
  34. Обратное распространение ошибки
  35. Создание графики с черепахой
  36. Создание вложенного генератора
  37. Метод bool() в Python
  38. Ускорение выполнения кода в Python
  39. Проверка индексов коллекции
  40. Тест скорости набора текста на Python
  41. Очистка данных с помощью pandas
  42. Хеши в Python
  43. Работа с getopt
  44. Аннотации типов в Python
  45. Сортировка в Python
  46. Использование обратной косой черты в f-строках

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