Sobes.tech
Back to questions
Junior — Middle
62

Каково назначение декоратора @classmethod в Python и в чем его отличие от обычных методов класса?

Companies where asked
ArendadataArendadata

Answer from AI

sobes.tech AI

Декоратор @classmethod в Python используется для определения метода, который получает первым аргументом не экземпляр класса (self), а сам класс (cls). Такой метод может обращаться к атрибутам и другим методам класса, а не конкретного объекта.

Отличия от обычных методов:

  • Обычные методы принимают первым параметром self — ссылку на конкретный экземпляр класса.
  • Методы с @classmethod принимают первым параметром cls — сам класс.

Это полезно, когда нужно создать альтернативные конструкторы или методы, которые работают с классом в целом, а не с отдельным объектом.

Пример:

class MyClass:
    count = 0

    def __init__(self):
        MyClass.count += 1

    @classmethod
    def get_instance_count(cls):
        return cls.count

obj1 = MyClass()
obj2 = MyClass()
print(MyClass.get_instance_count())  # Выведет: 2

Здесь get_instance_count — метод класса, который обращается к атрибуту класса count.