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