Resolvi colocar um exemplo para demonstrar o funcionamento
do decorador @classmethod. Como se pode ver na execução,
nesse código, após chamar o método unpack, é criado um novo
objeto do tipo MinhaClasse.
#!/usr/bin/python
# -*- coding: utf-8 -*-
class MinhaClasse:
def __init__(self, raw, prev):
print ("Criando a classe MinhaClasse")
self.raw = raw
self.prev = prev
#Método estático unpack
@classmethod
def unpack(cls, raw, prev=None):
print ("Tipo='%s' com o raw='%s' e prev='%s'" % (cls.__name__, raw, prev))
return cls(raw=raw, prev=prev)
if __name__ == '__main__':
MinhaClasse.unpack("raw content", "prev content") #Não precisa de instância, o método é chamado como o nome da classe
#Não precisa informar o valor de cls porque implicitamente ele sabe que deve ser passado o tipo da classe, ou seja "MinhaClasse"
Rodrigo Lira,