Курс 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. Создание генераторов
  4. Работа со стеком в Python
  5. Определение относительного пути
  6. Резервирование символов в Python
  7. Операторы присваивания в Python
  8. Активация Matplotlib в Jupyter
  9. Обновление ключей в Python
  10. Управление асинхронными задачами с помощью Semaphore
  11. Применение функции к элементам списка
  12. Добавление элемента в список.
  13. Функции в Python
  14. Декодирование байтов в строку
  15. Срез в Python
  16. Оператор морж в Python 3.8
  17. Поиск повторов в списке
  18. Метаклассы в Python
  19. Декоратор Ajax required
  20. Работа с collections.Counter
  21. Применение промокода в Много лосося
  22. Метод join() для объединения строк
  23. Модуль Antigravity в Python 3
  24. Установка и обучение ChatterBot
  25. Python Аргументы по умолчанию
  26. Создание таблиц в Python с PrettyTable
  27. Метод enumerate() в Python
  28. Инвертирование словаря
  29. Модуль subprocess: запуск внешних команд
  30. Работа с множествами в Python
  31. Вложенные функции в Python
  32. Оператор морж в Python 3.8
  33. Сортировка в Python
  34. Поиск частых элементов в списке
  35. Преобразование списка в словарь через генератор
  36. UserString в Python
  37. Разделение строки с помощью re.split()
  38. Установка переменной среды в Python
  39. Установка и использование модуля Wikipedia
  40. Функция product() из itertools
  41. Удаление файлов с shutil.os.remove()
  42. Создание словаря и множества
  43. Множественное наследование в Python
  44. Типы возвращаемых значений в Python

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