Exemplificando o @classmethod de Python

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,