Курс 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"
- Вызов внешних программ в Python с помощью sh
- Проверка на палиндром
- Хэш-функции и метод цепочек
- Логирование с Logzero
- Удаление файлов в Python
- Множественное присваивание в Python
- Работа с аргументами командной строки
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Удаление файлов и папок в Python
- Измерение времени выполнения кода
- Метод __getitem__ в Python
- Метод join() для объединения строк
- Генераторы и сеты в Python
- Создание словарей и множеств в Python
- Показ всплывающих окон Tkinter
- Удаление символа из строки
- Срез в Python
- Переменные класса и экземпляра
- Объединение, распаковка и деструктуризация
- Python: библиотеки и функции
- Генераторные функции в Python
- Преобразование строк в числа в Python
- Основы Python за 14 дней
- Замена атрибута в именованном кортеже
- Измерение времени выполнения кода с использованием time
- Запуск внешнего кода в Jupyter
- Создание коллекций из генератора
- Работа с эмодзи в Python
- Методы обработки строк в Python
- Генерация тестовых данных с factory_boy
- Импорт в Python: список all
- Операторы сравнения в Python
- Установка пакета в Python
- Модуль os: работа с файлами и папками
- Создание вкладок с TKinter
- Применение промокода в Много лосося
- Оптимизация гиперпараметров в Python
- Особенности множеств в Python
- Простой калькулятор Python
- Удаление ссылок в Python
- Оператор in для Python















