Курс 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"
- Документация функции help() в Python
- Создание вкладок с TKinter
- Удаление элемента по индексу в Python
- Логические операторы в Python
- Создание списка дат
- Преобразование регистра строк
- Установка и использование Virtualenv
- Операции с числами в Python
- Активация Matplotlib в Jupyter
- Преобразование числа в список цифр
- Управление асинхронными задачами с помощью Semaphore
- Обработка исключений
- Блок else в циклах Python
- Обработка исключений в Python
- Перетасовка списков в Python
- Проверка подстроки в строке с помощью in
- Numpy: разбиение массивов
- Оператор in для проверки наличия элемента
- Форматирование строк с % в Python
- Переворот списка в Python
- Функция enumerate в Python
- Создание графики с черепахой
- Работа с SQLite в Python
- Создание namedtuple из словаря
- Работа с многоуровневыми словарями в Python
- Освоение Python
- Запрос пароля с помощью getpass
- Сериализация данных в JSON с помощью json.dumps
- Переопределение унарных операторов
- Поиск подстроки в строке
- Работа с байтовыми строками в Python
- Итераторы в Python
- Поиск индекса элемента в списке
- Flask: создание веб-приложений
- Работа с контекстными менеджерами
- Работа со словарями с defaultdict из collections
- Эффективная конкатенация строк в Python
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Возврат нескольких значений
- Определение функций с необязательными аргументами
- Частичное совпадение пользовательского ввода в Python 3.10
- Математические функции в Python
- Типы возвращаемых значений в Python
- Введение в Python
- Библиотека Emoji: использование смайлов в Python
- Класс-оболочка для словарей
- Списковое включение в Python
- Установка Python3.7 и PIP
- Создание словаря с значением по умолчанию















