Sobes.tech
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 позволяет методам работать с самим классом, а не с отдельными экземплярами.