Back to questions
Arendadata
Junior — Middle
62
Каково назначение декоратора @classmethod в Python и в чем его отличие от обычных методов класса?
Companies where asked
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.