Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O parametro classe não está sendo gerado automaticamente

Temos o seguinte código:

class Perfil(object):
    'Classe padrão para perfis de usuários'

    def __init__(self, nome, telefone, empresa):
        self.nome = nome
        self.telefone = telefone
        self.empresa = empresa
        self.__curtidas = 0

    def curtir(self):
        self.__curtidas += 1

    def curtidas(self):
        return self.__curtidas

    @staticmethod
    def gerar_perfis(classe, nome_arquivo):
        arquivo = open(nome_arquivo, 'r')
        perfis = []
        for linha in arquivo:
            valores = linha.split(',')
            perfis.append(classe(*valores))
        arquivo.close()
        return perfis


    def imprimir(self):
        print 'Nome: %s\nTelefone: %s\nEmpresa: %s' % (self.nome, self.telefone, self.empresa)

class Perfil_Vip(Perfil):
    'Classe padrão para perfis de usuários vips'

    def __init__(self, nome, telefone, empresa, apelido=''):
        super(Perfil_Vip, self).__init__(nome, telefone, empresa)
        self.apelido = apelido

    def creditos(self):
        return super(Perfil_Vip, self).curtidas()*10.0

Meu problema é que quando eu chamo o método estático apenas com o caminho do arquivo, me retorna um erro dizendo que há mais parâmetros a serem passados (no caso o classe)

>>> perfis_vip = Perfil_Vip.gerar_perfis('C:\Users\julio\Desktop\Python\dados.csv')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: gerar_perfis() takes exactly 2 arguments (1 given)
>>>

Pra corrigir esse erro, devo passar o nome da classe explicitamente na chamada do método

>>> perfis_vip = Perfil_Vip.gerar_perfis(Perfil_Vip,'C:\Users\julio\Desktop\Python\dados.csv')
>>> type(perfis_vip[0])
<class '__main__.Perfil_Vip'>
>>>

Além disso o tipo veio com main ao invés do model :/

Na aula, a classe foi gerada automaticamente, mas não consigo ver o que fiz de errado

1 resposta
solução!

Achei o erro! Ao invés de chamar @classmethod Estava chamando @staticmethod