Курс 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. Документация функции help() в Python
  2. Создание вкладок с TKinter
  3. Удаление элемента по индексу в Python
  4. Логические операторы в Python
  5. Создание списка дат
  6. Преобразование регистра строк
  7. Установка и использование Virtualenv
  8. Операции с числами в Python
  9. Активация Matplotlib в Jupyter
  10. Преобразование числа в список цифр
  11. Управление асинхронными задачами с помощью Semaphore
  12. Обработка исключений
  13. Блок else в циклах Python
  14. Обработка исключений в Python
  15. Перетасовка списков в Python
  16. Проверка подстроки в строке с помощью in
  17. Numpy: разбиение массивов
  18. Оператор in для проверки наличия элемента
  19. Форматирование строк с % в Python
  20. Переворот списка в Python
  21. Функция enumerate в Python
  22. Создание графики с черепахой
  23. Работа с SQLite в Python
  24. Создание namedtuple из словаря
  25. Работа с многоуровневыми словарями в Python
  26. Освоение Python
  27. Запрос пароля с помощью getpass
  28. Сериализация данных в JSON с помощью json.dumps
  29. Переопределение унарных операторов
  30. Поиск подстроки в строке
  31. Работа с байтовыми строками в Python
  32. Итераторы в Python
  33. Поиск индекса элемента в списке
  34. Flask: создание веб-приложений
  35. Работа с контекстными менеджерами
  36. Работа со словарями с defaultdict из collections
  37. Эффективная конкатенация строк в Python
  38. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  39. Возврат нескольких значений
  40. Определение функций с необязательными аргументами
  41. Частичное совпадение пользовательского ввода в Python 3.10
  42. Математические функции в Python
  43. Типы возвращаемых значений в Python
  44. Введение в Python
  45. Библиотека Emoji: использование смайлов в Python
  46. Класс-оболочка для словарей
  47. Списковое включение в Python
  48. Установка Python3.7 и PIP
  49. Создание словаря с значением по умолчанию

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