[Python-es] Objetos Anidados (lista de objetos)
marcelo schiavone
marcelo.schiavone en gmail.com
Mar Nov 6 13:39:45 CET 2007
Hola Daniel, estuve viendo tu codigo y creo que la solucion que buscas es esta:
class persona:
def __init__(self):
self.nombre=""
self.direccion=""
self.hijos=[]
def AsignarHIjos(self, hijo):
self.hijos.append(hijo)
padre=persona()
padre.nombre="carlos"
hijo1=persona()
hijo1.nombre="pedro"
hijo2=persona()
hijo2.nombre="marta"
padre.AsignarHIjos(hijo1)
padre.AsignarHIjos(hijo2)
nieto1=persona()
nieto1.nombre="juan"
nieto2=persona()
nieto2.nombre="sandra"
hijo1.AsignarHIjos(nieto1)
hijo1.AsignarHIjos(nieto2)
print "HIJOS DEL PADRE (" + padre.nombre + "):\n"
for i in padre.hijos:
print i.nombre + ", "
print "HIJOS DEL HIJO 1("+ hijo1.nombre + "):\n"
for i in hijo1.hijos:
print i.nombre + ", "
Espero te sirva.
Saludos
El 6/11/07, Daniel <dmlistapython en gmail.com> escribió:
> Hola Chicos:
> tengo un problema con el siguiente código
> ----------------------
> class persona:
> nombre=""
> direccion=""
> hijos=[]
> def AsignarHIjos(self, hijo):
> self.hijos.append(hijo)
>
>
> padre=persona()
> padre.nombre="carlos"
> hijo1=persona()
> hijo1.nombre="pedro"
> hijo2=persona()
> hijo2.nombre="marta"
> padre.AsignarHIjos(hijo1)
> padre.AsignarHIjos(hijo2)
> nieto1=persona()
> nieto1.nombre="juan"
> nieto2=persona()
> nieto2.nombre="sandra"
> hijo1.AsignarHIjos(nieto1)
> hijo1.AsignarHIjos(nieto2)
>
> print len(padre.hijos)
> print len(hijo1.hijos)
> -------------------------
>
> Si lo ejecutan van a ver que tanto padre como hijo me devueven 4 hijos
> (cuando para el padre 2 son nietos, no hijos directos).
> Traté de buscar un caso "familiar" para que se entienda el código.
> Pregunta: ¿Porqué me interpreta dentro de la misma lista de hijos a
> todos y no los anida :(? ¿Cómo lo soluciono?
>
> Muchas gracias. Daniel (Arg)
>
>
>
>
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
Más información sobre la lista de distribución Python-es