Курс 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. Многострочные комментарии в Python
  3. Роль object и type в Python
  4. Работа с zip()
  5. Вызов функций по строке в Python.
  6. Поиск простых чисел
  7. Удаление дубликатов из списка
  8. Удаление ключа из словаря в Python
  9. Возврат нескольких значений
  10. Работа со словарями в Python
  11. Работа со словарями Python
  12. Операции с датами в Python
  13. Списковое включение в Python
  14. Документация функции help() в Python
  15. Основы Python за 14 дней
  16. Метод __ixor__ для побитового исключающего ИЛИ
  17. Удаление специальных символов с помощью re.sub
  18. PATCH-запрос с библиотекой requests
  19. Дизассемблирование Python кода
  20. Пустой оператор pass в Python
  21. Проверка строки на палиндром
  22. Основные функции и модули Python
  23. Оператор (*) в Python
  24. Глобальные переменные в Python
  25. Поиск уникальных и повторяющихся элементов
  26. Сериализация данных в JSON с помощью json.dumps
  27. Поиск индекса элемента
  28. Хеширование паролей с солью
  29. Генератор списка в Python
  30. Описание скриптов в README
  31. Работа с исключениями в Python
  32. Хранение переменных в Python.
  33. Поиск индексов в списке
  34. Метод split() в Python
  35. Преобразование кортежа в словарь.
  36. Считывание бинарного файла в Python
  37. Генераторы данных
  38. Метод join для наборов
  39. Преобразование чисел в слова
  40. Работа с кортежами в Python
  41. Создание коллекций из генератора
  42. Оптимизация памяти в Python
  43. Переворот строки с помощью срезов
  44. Метод __iand__ для пользовательских классов
  45. Манипуляция формой массива в Numpy
  46. Декоратор проверки активности
  47. Профилирование кода на Python
  48. Блок else в циклах Python

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