cavatoni 0 Denunciar post Postado Outubro 17, 2007 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
ScornInPC 1 Denunciar post Postado Outubro 18, 2007 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