Курс 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. Метод repr() в Python
  4. Просмотр внешних файлов в %pycat
  5. Декораторы для регистрации функций
  6. Проверка класса объекта
  7. Создание пользовательской коллекции в Python
  8. Настройка нарезки списков
  9. Метод split() для разделения строк
  10. Создание списка через итерацию
  11. Форматирование чисел в Python
  12. Оператор is в Python
  13. Генератор бросков кубиков
  14. Избегайте изменяемых аргументов
  15. Назначение максимального и минимального значения переменной в Python.
  16. Метод append() для списка
  17. Функция zip() в Python
  18. Сортировка HTML-элементов
  19. Создание словарей с defaultdict()
  20. Основы слова
  21. Запуск Python из интерпретатора
  22. Просмотр внешнего файла в Python
  23. Работа с исключениями в Python
  24. Экспорт данных с помощью writefile
  25. Проверка версии Python
  26. Удаление falsy-значений из списка с помощью filter
  27. Изменение логики работы с временем
  28. Присвоение значений переменным в Python
  29. Подсказки типов в Python
  30. Возврат нескольких значений
  31. Использование super() в Python
  32. Переопределение метода __lshift__
  33. Методы и функции в Python
  34. Python Метод Union Множеств
  35. Работа с процессами в Python
  36. Просмотр атрибутов и методов класса
  37. Группы исключений в Python
  38. Модуль sys: основы
  39. Разделение строки с помощью re.split()
  40. Принципы SRP и OCP
  41. Открытие и запись файлов
  42. Декодирование байтов в строку
  43. Метод hash в Python
  44. Обновление ключей в Python
  45. Метод add для класса Vector
  46. Дизассемблирование Python кода

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