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

Video Aula 10 - Mau entendido no objeto vip

A partir dos 13 minutos do vídeo 1 da AULA 10 : Reaproveitando código através de Herança é criado um objeto com o nome vip, mas utilizando a classe Perfil e não a Perfil_VIp. Penso ter havido um mau entendido. Testei utilizando a classe Perfil_Vip e funcionou corretamente.

Alguém verificou isso?

Classes:

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, Curtidas: %s' % (self.nome, self.telefone, self.empresa, self.__curtidas)

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

    def obter_curtidas(self):
        return self.__curtidas

class Perfil_Vip(Perfil):
    'Classe para perfils vip'

    def obter_creditos(self):
        return self.obter_curtidas() * 10

Teste no terminal:

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from models import *
>>> vip = Perfil_Vip('Joca','na','TKS')
>>> vip.nome
'Joca'
>>> vip.telefone
'na'
>>> vip.empresa
'TKS'
>>> vip.curtir()
>>> vip.curtir()
>>> vip.obter_curtidas()
2
>>> vip.obter_creditos()
20
>>>
1 resposta
solução!

Você tem razão. Inclusive o erro que o Python aponta não é causado pela ausência do super. Apesar deste engano, a explicação continua correta e um erro similar aconteceria.

Seu exemplo funcionou porque você não tentou acessar diretamente o atributo __curtidas. Experimente acessá-lo diretamente no método da classe Perfil_Vip e verá que um erro ocorre, devido a ausência do super.

Vou repassar para a equipe de conteúdo para que isso seja resolvido o mais rápido possível. Obrigado!