Курс 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. Добавление элемента в список.
  3. Объединение списков в Python
  4. Генераторы списков в Python
  5. Аннотации типов в Python
  6. Сравнение def и lambda в Python
  7. Перезагрузка оператора в Python
  8. Работа с переменными в Python
  9. Определение имен функций
  10. Работа с аргументами командной строки в Python
  11. Перевод эмодзи и эмотиконов.
  12. Удаление элементов во время итерации
  13. Печать в одной строке
  14. Передача словаря через **kwargs
  15. Работа с файлами в Python
  16. Форматирование данных с помощью pprint
  17. Импорт модулей и пакетов в Python
  18. Названия переменных
  19. Сумма элементов списка
  20. Операции с датами в Python
  21. Доступ к локальным переменным
  22. Основы Python
  23. Профилирование с Pandas
  24. Python: Фильтрация списков с помощью filter()
  25. Транспонирование матрицы в Python
  26. Ограничение ресурсов в Python
  27. Хеширование паролей с солью
  28. Моржовый оператор в Python 3.8
  29. Срез списка в Python
  30. Метод __ilshift__ для битового сдвига влево
  31. Множественные конструкторы в Python
  32. Атрибуты класса и экземпляра
  33. Сравнение строк в Python
  34. Избегание изменяемых аргументов
  35. Работа с набором данных CIFAR10 в PyTorch
  36. Docstring в Python
  37. Расширение информации об ошибке в Python
  38. Настройка логгера Logzero
  39. Подсчет частоты элементов с Counter
  40. Работа со случайными элементами
  41. Экспорт данных в файл.
  42. Замена символов в строке
  43. Использование двоеточия в Python
  44. Оформление кода по PEP 8
  45. Работа с байтовыми строками в Python
  46. CLI-инструмент howdoi
  47. Конвертация текстовых чисел с помощью Numerizer

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