Курс 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. Удаление файлов с shutil.os.remove()
  3. F-строки в Python
  4. Быстрый поиск кода
  5. Экранирование символов в Python
  6. Именованные срезы в Python
  7. Работа со строками в Python
  8. Переворот последовательности
  9. Построение графиков в терминале с bashplotlib
  10. Удаление ключа из словаря
  11. Создание новых функций через partial
  12. Bootle — простой веб-фреймворк
  13. Динамическая типизация в Python
  14. Отладка в Python
  15. Выражения-генераторы в Python
  16. Работа с файлами в Python
  17. Автоматизация с Python
  18. Изменение IP-адреса в Python
  19. Регистрация на хакатоне
  20. Оптимизация памяти с помощью __slots__
  21. Вывод с переменной через запятую
  22. Работа с CSV файлами
  23. Установка максимального количества цифр
  24. Декораторы в Python
  25. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  26. Названия переменных
  27. Счетчик ссылок в Python
  28. Модуль sys: основы
  29. Подписка на Kaspersky Team
  30. Поиск элементов BeautifulSoup
  31. Подсчет элементов в списке с Counter
  32. Контекстный менеджер в Python
  33. Описание скриптов в README
  34. Библиотека sh: удобные команды терминала
  35. Использование обратной косой черты в f-строках
  36. Итерация по итерируемым объектам
  37. Создание новых функций с помощью functools.partial
  38. Функция zip() в Python
  39. Декодирование байтов в строку
  40. Извлечение чисел из текста
  41. Преобразование регистра символов
  42. Поиск индексов в списке
  43. Установка виртуального окружения Python
  44. Запуск асинхронной корутины
  45. Создание именованных кортежей в Python
  46. Обработка ошибки IndexError
  47. Утечки переменных цикла в Python 3.x
  48. Обработка StopIteration в Python
  49. Сортировка элементов в Python

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