Back to questions
Junior — Middle
54
Как функционирует декоратор @classmethod в Python и какую роль он играет в методах класса?
Answer from AI
sobes.tech AI
Декоратор @classmethod в Python используется для определения метода класса, который получает в качестве первого аргумента не экземпляр класса (self), а сам класс (cls). Это позволяет методу работать с классом и его атрибутами, а не с конкретным объектом.
Основные особенности:
- Метод класса может быть вызван как на экземпляре, так и на самом классе.
- Позволяет создавать альтернативные конструкторы или методы, которые влияют на класс в целом.
Пример:
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
@classmethod
def create_with_value(cls, value):
obj = cls()
obj.value = value
return obj
# Использование
print(MyClass.get_count()) # 0
obj1 = MyClass()
obj2 = MyClass.create_with_value(10)
print(MyClass.get_count()) # 2
Таким образом, @classmethod позволяет методам работать с самим классом, а не с отдельными экземплярами.