Этот вопрос проверяет знание о методах класса, их особенностях и отличиях от методов экземпляра.
Методы класса определяются с помощью декоратора @classmethod. Первый аргумент такого метода — cls, который ссылается на сам класс. Они могут использоваться для работы с классом, а не с конкретным экземпляром.
Метод класса позволяет обращаться к самому классу, а не к экземпляру. Для его создания используется декоратор @classmethod.
Особенности:
Первый аргумент — cls (ссылка на класс).
Подходит для создания альтернативных конструкторов или работы с класс-атрибутами.
Пример:
class MyClass:
class_variable = 0
@classmethod
def increment_class_variable(cls):
cls.class_variable += 1
MyClass.increment_class_variable()
print(MyClass.class_variable) # 1Когда использовать:
Для работы с атрибутами класса.
Для создания объектов через альтернативные конструкторы
Пример альтернативного конструктора:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_string(cls, data_string):
name, age = data_string.split(",")
return cls(name, int(age))
person = Person.from_string("Alice,30")
print(person.name, person.age) # Alice 30