Встроенная функция Python classmethod()

Из документации Python 3

Преобразует метод в классовый метод. Классовый метод получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр.

Introduction

classmethod — это метод, привязанный к классу, а не к экземпляру класса. Он принимает сам класс в качестве первого аргумента, условно называемого cls. Это контрастирует с обычным методом экземпляра, который принимает экземпляр в качестве первого аргумента (self).

Они часто используются для фабричных методов, которые создают экземпляры класса определенным образом.

Example

Вот распространенный сценарий использования: создание фабричного метода, который может создавать экземпляр класса из другого формата данных, например, из словаря.

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

    @classmethod
    def from_dict(cls, data):
        # Это фабричный метод, который создает экземпляр Person из словаря
        return cls(data['name'], data['age'])

    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")

# Данные для нового человека
person_data = {'name': 'John', 'age': 30}

# Создание экземпляра Person с использованием классового метода
p = Person.from_dict(person_data)

p.display()
Name: John, Age: 30