Встречается на собеседованиях • сегодня

Как работает декоратор @classmethod

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

Основные особенности:

  • Первый параметр — всегда cls (соглашение, можно назвать иначе, но не рекомендуется)
  • Может вызываться как через класс, так и через экземпляр
  • Часто используется для фабричных методов (альтернативных конструкторов)

Пример:

python
class MyClass:
    count = 0

    @classmethod
    def increment_count(cls):
        cls.count += 1
        return cls.count

print(MyClass.increment_count())  # 1
obj = MyClass()
print(obj.increment_count())      # 2

Фабричный метод:

python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def from_birth_year(cls, name, birth_year):
        return cls(name, 2024 - birth_year)

person = Person.from_birth_year('Alice', 1990)
print(person.age)  # 34
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы