Курс 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. Сравнение def и lambda функций в Python
  2. inspect в Python: анализ кода
  3. Метод repr() в Python
  4. Разделение функций на этапы
  5. Проблемы с именами переменных
  6. Команда %dhist — список посещенных каталогов
  7. Модуль pprint
  8. Группы исключений в Python
  9. Генераторы и сеты в Python
  10. Генераторы в Python
  11. Создание директории в Python
  12. Python Метод sleep() времени
  13. Работа с географическими данными в Python
  14. Присоединение элементов коллекции
  15. Python: возвращение нескольких значений
  16. Избегайте двойного подчеркивания
  17. Работа с CSV файлами в Python
  18. Очистка данных с помощью pandas
  19. Контекстный менеджер в Python
  20. Модуль antigravity: генерация координат
  21. Переопределение метода __rshift__
  22. Генерация тестовых данных с factory_boy
  23. Генераторы списков в Python
  24. Метод rsub в Python: расширение функциональности вычитания
  25. Преобразование данных в Python
  26. Функция all() в Python
  27. Оператор «not» в Python
  28. Мониторинг работы программы Py-spy
  29. Метод setdefault() в Python
  30. Философия Python
  31. Модуль math: константы π и e
  32. Оптимизация гиперпараметров с Scikit Optimize
  33. Вакансии в Nebius
  34. Оптимизация гиперпараметров в Python
  35. Ограничение итераций в Python
  36. Любовь к Python
  37. Защита данных в Python
  38. Область видимости переменных
  39. Работа со строками в Python
  40. Создание словаря через dict comprehension
  41. Копирование и вставка текста в Python
  42. Генерация UUID в Python
  43. Оператор match в Python
  44. Извлечение аудио из видео
  45. Чтение бинарного файла в Python.
  46. Работа с модулем bisect

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