Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problema de herança para método estático

Não consigo achar onde esta o erro no meu código comparando com o código da aula. Meu models esta assim:

# -*- coding:UTF-8 -*-

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

    def imprime(self):
        print 'Nome: %s Telefone: %s Empresa: %s Numero de curtidas: %s' % (self.nome,self.telefone,self.empresa,self.__curtidas)

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

    def obter_curtidas(self):
        print self.__curtidas

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

class Perfil_Vip(Perfil):

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

Quando chamo no terminal o método gerar_perfis pela classe Perfil fica tudo perfeito, mas quando tento pela classe Perfil_Vip recebo o seguintes erro:

super() argument 1 must be type, not classobj

Acredito que seja mais um erro de herança que realmente de método estático =/

3 respostas

Achei o problema, aparentemente era a falta do object na declaração da classe Perfil , só não entendi o por que.

class Perfil(object):
solução!

Ola, Gabriel!

Usar o object é um novo estilo de programação no python que vai nos dar algumas coisas legais para usar.

Repare que quando vc executa o comando:

perfil = Perfil('Flávio Almeida', 'não informado', 'Caelum')

Sem o object :

type(perfil)

perfil.class

Com o object :

type(perfil)

perfil.class

Isso é só uma coisinha que ganhamos ao usar o object, no curso vc verá varias outras coisas.

Agora o fato do erro, pode ser a versao do Python que vc tenha instalado, precisamos averiguar!

Espero ter ajudado!

Abraço e bons estudos !

Vlw Cristiano!