Função built-in classmethod() do Python
Transforma um método em um método de classe. Um método de classe recebe a classe como um primeiro argumento implícito, assim como um método de instância recebe a instância.
Introdução
Um classmethod é um método que está vinculado à classe e não à instância da classe. Ele recebe a própria classe como seu primeiro argumento, convencionalmente nomeado cls. Isso contrasta com um método de instância regular, que recebe a instância como seu primeiro argumento (self).
Eles são frequentemente usados para métodos de fábrica que criam instâncias da classe de uma maneira específica.
Exemplo
Aqui está um caso de uso comum: criar um método de fábrica que pode instanciar a classe a partir de um formato de dados diferente, como um dicionário.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
# Este é um método de fábrica que cria uma instância de Person a partir de um dicionário
return cls(data['name'], data['age'])
def display(self):
print(f"Name: {self.name}, Age: {self.age}")
# Dados para uma nova pessoa
person_data = {'name': 'John', 'age': 30}
# Cria uma instância de Person usando o método de classe
p = Person.from_dict(person_data)
p.display()
Name: John, Age: 30