Курс 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"
- Цикл for с enumerate() в Python
- Особенности запятых в Python
- Безопасный доступ к значениям словаря
- Python itertools combinations() — группировка элементов
- Обработка данных в Python
- Математические функции в Python
- Оператор * в Python
- Создание пользовательской коллекции в Python
- Наследование в программировании
- Создание директории в Python
- Профилирование с Pandas
- PEP-401: оператор
- Pretty-printing JSON в Python
- Параллельные вычисления в Python
- Метод сравнения объектов в Python
- Работа с итераторами через срезы
- Объединение списков с помощью zip
- Удаление дубликатов из списка
- Установка и использование emoji
- Переворот строки с использованием цикла
- Синхронизация доступа к ресурсам
- Глобальные переменные в Python
- Методы split() и join() — Python строк.
- Функции в Python: создание и вызов
- Атрибуты массивов в Numpy
- Проверка дублей в списке.
- Декоратор total_ordering для класса Point
- Избегайте изменяемых аргументов
- Функция zip() в Python
- ChainMap.new_child() — добавление нового словаря
- Импорт модуля из другого каталога
- Обработка ошибок в Python
- Объединение списков в Python.
- Уникальность ключей в словаре
- Сглаживание списка
- Область видимости переменных
- Передача аргументов через **arguments
- Метод title() в Python
- Работа с WindowsPath()
- Вычисление фазы комплексного числа
- Поиск наиболее частого элемента списке
- Генератор данных в Keras
- Работа с библиотекой requests
- Хранение данных с помощью dataclasses
- Декораторы классов
- Метод get для словарей















