Junior — Middle
Pouvez-vous expliquer comment fonctionne le décorateur @classmethod en Python et à quoi il sert?
sobes.tech IA
Réponse de l'IA
Декоратор @classmethod в Python используется для определения метода класса, который получает в качестве первого аргумента не экземпляр класса (self), а сам класс (cls). Это позволяет вызывать метод как от имени класса, так и от имени экземпляра, при этом внутри метода можно работать с самим классом, а не с конкретным объектом.
Основные особенности:
- Первый параметр метода —
cls, ссылка на класс. - Метод может создавать новые экземпляры класса или изменять свойства класса.
- Вызывается через
ClassName.method()илиinstance.method().
Пример:
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
# Использование
obj1 = MyClass()
obj2 = MyClass()
print(MyClass.get_count()) # Выведет: 2
print(obj1.get_count()) # Тоже выведет: 2
Таким образом, @classmethod полезен для работы с состоянием класса, фабричных методов и других случаев, когда нужно оперировать самим классом, а не отдельным объектом.