Курс 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
- Добавление элемента в список.
- Объединение списков в Python
- Генераторы списков в Python
- Аннотации типов в Python
- Сравнение def и lambda в Python
- Перезагрузка оператора в Python
- Работа с переменными в Python
- Определение имен функций
- Работа с аргументами командной строки в Python
- Перевод эмодзи и эмотиконов.
- Удаление элементов во время итерации
- Печать в одной строке
- Передача словаря через **kwargs
- Работа с файлами в Python
- Форматирование данных с помощью pprint
- Импорт модулей и пакетов в Python
- Названия переменных
- Сумма элементов списка
- Операции с датами в Python
- Доступ к локальным переменным
- Основы Python
- Профилирование с Pandas
- Python: Фильтрация списков с помощью filter()
- Транспонирование матрицы в Python
- Ограничение ресурсов в Python
- Хеширование паролей с солью
- Моржовый оператор в Python 3.8
- Срез списка в Python
- Метод __ilshift__ для битового сдвига влево
- Множественные конструкторы в Python
- Атрибуты класса и экземпляра
- Сравнение строк в Python
- Избегание изменяемых аргументов
- Работа с набором данных CIFAR10 в PyTorch
- Docstring в Python
- Расширение информации об ошибке в Python
- Настройка логгера Logzero
- Подсчет частоты элементов с Counter
- Работа со случайными элементами
- Экспорт данных в файл.
- Замена символов в строке
- Использование двоеточия в Python
- Оформление кода по PEP 8
- Работа с байтовыми строками в Python
- CLI-инструмент howdoi
- Конвертация текстовых чисел с помощью Numerizer















