Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cavatoni

Problema com classes e dicionário

Recommended Posts

Ola,

estou passando por um problema com python.

Se alguem puder me ajudar agradeceria muito mesmo!

 

Para ilustrar o problema, tai um código exemplo:

 

class teste:	id = ''	dic={'um': 1, 'dois': 2}class principal:	lista=[teste()]x=principal()x.lista.append(teste())x.lista[0].id='6'x.lista[0].dic['um']=3 #AQUI COMECA O PAU!!!print x.lista[0].id #imprime 6 ==>OKprint x.lista[1].id #imprime '' ==>OKprint x.lista[0].dic #imprime: {'um': 3, 'dois': 2} ==>OKprint x.lista[1].dic #imprime: {'um': 3, 'dois': 2} ==>ERRO!!!! quero imprimir:{'um': 1, 'dois': 2}

 

Ou seja, a pergunta é:

 

Por que quando modifico "id", ele só altera para o elemento que pedi, e quando modifico o dicionário, ele modifica para todos os elementos da minha lista????

 

Como posso fazer para modificar o dicionário APENAS do elemento da lista que quero?

 

 

Brigadao!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola cavatoni, tudo trunquilis? ^^

Bem vindo ao forum, reparei que é seu primeiro post, e aproveito pra pedir desculpa pela demora, o forum de python AINDA é novo, e o pessoal ainda ta meio devagar xD

 

bem, vamos lá.

 

é sempre aconselhavel, que voce crie as atributo, mas as alimentem dentro dos métodos. assim fica mais facil de você usar o self, e dizer que é daquela classe o atributo que esta mudando ^^

 

Então o que eu fiz, foi cria-las, e alimenta-las dentro do construtor.

 

ps: ali no id eu coloquei =0 pra você ver, mas pode mudar de volta pra '' mesmo, sem problema

 

class teste:	id  = None	dic = None		def __init__(self):		self.id  = 0		self.dic = { "um":1, "dois":2 }class principal:	lista=[teste()]x = principal()x.lista.append(teste())x.lista[0].id = 6x.lista[0].dic["um"] = 3print "Lista 1"print x.lista[0].idprint x.lista[0].dicprint ''print "Lista 2"print x.lista[1].idprint x.lista[1].dic

ó, um material bom sobre esse assundo, pode ser visto aqui ó, bem simples ^^

http://www.async.com.br/projects/python/pnp/node41.html

 

abração \o/ http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.