Prezados,
Como informei no último post, estou aprendendo python há pouco tempo e tem surgido algumas dúvidas.
A dúvida da vez é referente ao encapsulamento.
Vamos ao exemplo:
Tenho 5 classes: Pessoa, Pai, Filha, Neta e TesteHerança
A classe pessoa contém atributos e métodos, porém vazios, pois ela só serve para ser herdada pelas outras (* No sentido em que todo pai, filha ... é uma pessoa)
# coding=utf-8
class Pessoa:
nome = ''
sobrenome = ''
residencia = ''
corDosOlhos = ''
profissao = ''
@classmethod
def compararOlhos(cls):
print ''
@classmethod
def imprimirInformacoes(cls):
print ''
A classe Filha contém a sobrescrita dos atributos e do método imprimirInformacoes(), e contém uma informação que depende da Classe Pai:
# coding=utf-8
from Pessoa import Pessoa
from Pai import Pai
p = Pai()
class Filha(Pessoa):
nome = 'Marina'
sobrenome = 'Martins'
corDosOlhos = 'Azuis'
residencia = 'Planaltina'
profissao = 'Professora'
@classmethod
def imprimirInformacoes(cls):
print '%s %s' % (Filha.nome, Filha.sobrenome)
print 'Os olhos são : ' + Filha.corDosOlhos
print 'Reside ein: ' + Filha.residencia
print 'Trabalha como: ' + Filha.profissao
print 'O nome do pai é: ' + p.get_nome()
No momento em que eu dou p.get_nome() quero que ele receba o nome que vou passar no meu método set da Classe Pai.
eis que a classe Pai está assim e ela é justamente meu problema.
# coding=utf-8
from Pessoa import Pessoa
class Pai(Pessoa):
nome = None
sobrenome = 'Martins'
corDosOlhos = 'Pretos'
residencia = 'Lago norte'
def get_nome(self):
return self.nome
def set_nome(self, nome):
self.nome = nome
Preciso que o nome passado pelo usuário no argumento seja salvo no atributo nome, porém tentei de muitas formas e não consegui, fazendo com que minha classe Filha não consiga recuperar o nome do atributo pois o mesmo não está salvo. Quando informo nome = None, o programa diz que não pode concatenar o objetos NoneType com Str ... Quando informo nome = '' o programa mostra o campo vazio.
Não sei se deu pra entender, mas como eu posso fazer pro meu atributo salvar o nome que passo neste momento abaixo?
# coding=utf-8
from Pai import Pai
from Filha import Filha
from Neta import Neta
class Main:
p = Pai()
f = Filha()
n = Neta()
p.set_nome("Antonio")
f.imprimirInformacoes()
Retorno quando declaro nome = ''
Marina Martins
Os olhos são : Azuis
Reside ein: Planaltina
Trabalha como: Professora O nome do pai é: