3
respostas

erro

toda vez que faço a herança e aplico o método obeter créditos funciona, mas se eu multiplicar o valor por 10 da erro, quem puder ajudar, agradeceria

# -*- coding: UTF-8 -*-
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 imprimir(self):
            print ("Nome : %s, Telefone: %s, Empresa %s" % (self.nome, self.telefone, self.empresa))

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

    def obter_curtidas(self):
        return print(self.__curtidas)


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

   def obter_creditos(self):
      return super(Perfil_Vip, self).obter_curtidas() *10

vip = Perfil_Vip('joão','0089','unit')
vip.curtir()
vip.curtir()
vip.obter_curtidas()
vip.obter_creditos()

esse é o erro que aparece

2
Traceback (most recent call last):
2
  File "C:/Users/joaovictor/PycharmProjects/projeto1/projeto.py", line 52, in <module>
    vip.obter_creditos()
  File "C:\Users\joaovictor\PycharmProjects\projeto1\venv\classes.py", line 25, in obter_creditos
    return super(Perfil_Vip, self).obter_curtidas()*10
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
3 respostas

Tentou forçar como inteiro: (int(super(Perfil_Vip, self).obter_curtidas()) )*10

Acho que ficaria melhor mudar o seu método:

    def obter_curtidas(self):
        return print(self.__curtidas)

Para imprimir o valor e depois retornar ele:

    def obter_curtidas(self):
        print (self.__curtidas)
        return self.__curtidas

Porque quando multiplicar o resultado do print por 10 da erro por causa dos tipos dos dados.

Oi, Matheus! Como o Rafael indicou, o problema está nessa linha de seu método obter_curtidas():

return print(self.__curtidas)

Você está retornando o retorno de print, que é sempre None. Na verdade, queremos retornar apenas o número de curtidas, então:

return self.__curtidas

Se quisermos imprimir esse valor, daí podemos usar:

print(vip.obter_curtidas())