Курс 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. Функция enumerate в Python
  2. Объединение словарей в Python
  3. Списковые включения в Python
  4. Python itertools combinations() — группировка элементов
  5. Работа с Path в Python
  6. split() без разделителя
  7. Функция enumerate в Python
  8. Перемещение и удаление файлов в Python
  9. Основы работы с базами данных в Python
  10. Блок else в циклах Python
  11. Функция pow() — возвести число в степень
  12. Удаление файлов с shutil.os.remove()
  13. Работа с f-строками 2.0
  14. Метод is_absolute() для PurePath
  15. ChainMap избыточные ключи
  16. Работа с файлами в Python
  17. HTTP-запросы с библиотекой Requests
  18. Математические функции в Python
  19. Обработка исключений в Python
  20. Python: Splat-оператор и splatty-splat
  21. Парсинг статей с Newspaper3k
  22. Переопределение метода sub
  23. Значения по умолчанию в Python
  24. Переопределение метода __rshift__
  25. Получение текущей директории
  26. Оптимизация параметров в Python
  27. Удаление ключей из словаря
  28. Реализация метода __abs__ в Python
  29. Модуль os: работа с файлами и папками
  30. Делегирование в Python
  31. Подсказки типов в Python
  32. Метод join() с набором
  33. Замена текста в Python
  34. Очистка строки в Python
  35. Циклы for в Python
  36. Прокачанный трейсинг ошибок
  37. Метод lt для сортировки объектов
  38. Форматирование строк в Python
  39. Пропуск строк в файле с itertools
  40. Создание итерируемых объектов
  41. Определение относительного пути
  42. Работа с итераторами в Python
  43. Введение в PyTorch
  44. Библиотека wikipedia для Python
  45. Замена символов в строке
  46. Создание объекта timedelta

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