Prezados,
Gostaria de saber a razão da classe "filha" ter acesso a todos os atributos da classe "Mãe" com excessão de um deles(__curtidas). Segue abaixo o código e os testes realizados:
Código
-- coding: utf-8 --
class Perfil(object): 'Classse para moldar perfis de usuarios'
def init(self, nome, telefone, empresa): self.nome = nome self.telefone = telefone self.empresa = empresa self.__curtidas = 0
def obter_curtidas(self): return self.__curtidas
def curtir(self): self.__curtidas+=1
def imprimir(self): print 'Nome %s, Telefone %s, Empresa %s, Curtidas: %s' % (self.nome, self.telefone, self.empresa, self.__curtidas)
class Perfil_Vip(Perfil): 'Classse para moldar perfis de usuarios Vips'
def obter_creditos(self): return self.__curtidas ** 10
Testes
from models import * vip = Perfil_Vip('Rafael', 'N/A', 'Empresa X') vip.nome 'Rafael' vip.telefone 'N/A' vip.empresa 'Empresa X' vip.curtir() vip.imprimir() Nome Rafael, Telefone N/A, Empresa Empresa X, Curtidas: 1
Agora... Quando tento utilizar a função obter_creditos(): da classe Vip tomo o erro abaixo:
vip.obter_creditos() Traceback (most recent call last): File "", line 1, in File "models.py", line 26, in obter_creditos return self.curtidas ** 10 AttributeError: '_Perfil__curtidas', object has no attribute '_Perfil_Vip__curtidas'
Informações sobre o objeto:
vip.dict {'empresa': 'Empresa Z', '_Perfil__curtidas': 1, 'telefone': 'na', 'nome': 'Grasi'}
dir(vip) ['_Perfil__curtidas', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduceex\_', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'curtir', 'empresa', 'imprimir', 'nome', 'obter_creditos', 'obter_curtidas', 'telefone']