[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