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)
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 é:
Pergunta
joao0212
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 é:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.