Back to questions
Junior — Middle
71
Можете объяснить, как работает декоратор @classmethod в Python и для чего он используется?
Answer from AI
sobes.tech AI
Декоратор @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 полезен для работы с состоянием класса, фабричных методов и других случаев, когда нужно оперировать самим классом, а не отдельным объектом.