GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[Python] object has no attribute


#1

Galera, tou precisando aqui de um pouco de ajuda… Eu fiz uma agenda, e estou tentando alterar o nome da pessoa (depois de a pessoa ser adicionada).

Só que tou tendo esse erro:

Esse erro só aparece quando tento ver a minha lista da agenda de contactos…

Código de ver a lista da agenda:

def Lista():
if pessoas==[]:
print("\n[ERRO] Não foi encontrado nenhuma pessoa.")
return
else:
print("\n------- Agenda ------\n")
pessoa = 0
for pessoa in pessoas:
Dadospessoas(pessoa)
print("\n---- Fim da Agenda ----\n")
opcao=input("\nInsira qualquer telca para voltar ao menu ")
return

def Dadospessoas(pessoa):
print("[Pessoa %s]\nNome: %s \nNúmero de Telemóvel: %s \nIdade: %s anos\nAltura: %s metros\nPeso: %s kg\n" % (pessoa.getId(), pessoa.getNome(), pessoa.getNumero(), pessoa.getIdade(), pessoa.getAltura(), pessoa.getPeso()))

Código que tou usando pra alterar o nome da pessoa:

def alterarnome(pesquisa):
global nome
pessoa = 0
self = 0
nome=input("\nInsira o nome-> “)
p = Pessoa(id,nome,numero,idade,altura,peso)
p.setNome(nome)
p = Pessoa(id,nome,numero,idade,altura,peso)
pessoas[pesquisa] = [id,nome,numero,idade,altura,peso]
print(”\nNúmero alterado.")
Menueditar(pesquisa)

a variavel pesquisa é usado pra encontrar a pessoa (tá funcionando)…

Obrigado ae a quem puder me ajudar… Agradeço bastante!


#2

1° a identação do post esta ruim, da raiva de ler.
2° não usa “…” em todo final de frase. ([…]que estou[…] e não […]que tou[…])
O erro é muito claro pra ti, aprende a ler error do console.

  • list objec has no attribute getId, isso depende como voce implementou a sua classe pessoa, ela possuiu un @property pra cada atributo? se nao o modo de acessar as variaveis sao pessoa.id, pessoa.peso.
  • Por que voce inicializa pessoa com 0?
  • Por que voce faz un return sem nada ?
  • Por que self com 0? Por convenção, o primeiro parâmetro de um método é chamado self, que neste caso pode ser traduzido como “o próprio objeto”.

meu avô dizia, "Não coloque a carroça na frente dos bois"
Abraço