Курс 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
- Удаление файлов с shutil.os.remove()
- F-строки в Python
- Быстрый поиск кода
- Экранирование символов в Python
- Именованные срезы в Python
- Работа со строками в Python
- Переворот последовательности
- Построение графиков в терминале с bashplotlib
- Удаление ключа из словаря
- Создание новых функций через partial
- Bootle — простой веб-фреймворк
- Динамическая типизация в Python
- Отладка в Python
- Выражения-генераторы в Python
- Работа с файлами в Python
- Автоматизация с Python
- Изменение IP-адреса в Python
- Регистрация на хакатоне
- Оптимизация памяти с помощью __slots__
- Вывод с переменной через запятую
- Работа с CSV файлами
- Установка максимального количества цифр
- Декораторы в Python
- Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
- Названия переменных
- Счетчик ссылок в Python
- Модуль sys: основы
- Подписка на Kaspersky Team
- Поиск элементов BeautifulSoup
- Подсчет элементов в списке с Counter
- Контекстный менеджер в Python
- Описание скриптов в README
- Библиотека sh: удобные команды терминала
- Использование обратной косой черты в f-строках
- Итерация по итерируемым объектам
- Создание новых функций с помощью functools.partial
- Функция zip() в Python
- Декодирование байтов в строку
- Извлечение чисел из текста
- Преобразование регистра символов
- Поиск индексов в списке
- Установка виртуального окружения Python
- Запуск асинхронной корутины
- Создание именованных кортежей в Python
- Обработка ошибки IndexError
- Утечки переменных цикла в Python 3.x
- Обработка StopIteration в Python
- Сортировка элементов в Python















