Sobes.tech
Назад к вопросам
Junior — Middle
72

Можете объяснить, как работает декоратор @classmethod в Python и для чего он используется?

Ответ от нейросети

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 полезен для работы с состоянием класса, фабричных методов и других случаев, когда нужно оперировать самим классом, а не отдельным объектом.