clases

Rafael Villar Burke pachi en rvburke.com
Lun Nov 10 13:23:05 CET 2008


Pablo Martin Rodriguez wrote:
> Muy buenas. Debo de ser bastante malo en esto, o quizas no me he enterado de
> algo importante. El caso es que al usar una clase creada por mi, esta no
> tiene el comportamiento esperado. Para simplificarlo todo, he acabado
> creando esta clase:
>
> class lista:
>     puntos=[]
>     def addPunto(self,punto):
>         self.puntos+=[punto]
>
> Muy sencilla, tan solo almacena los puntos, es más, lo hace. El problema, es
> que, al crear varias instancias de la clase lista, al añadir un punto a
> cualquiera de ellas, se añade a todas. Es decir, no puedo tener mas de una
> lista, pq aunque las cree, y esten en direcciones de memoria distintas, al
> añadir un punto a una de ellas, se añade a todas, por lo que todas son
> iguales. ¿alguien sabe que es lo que estoy haciendo mal? muchas gracias.
>   
puntos es una lista que pertenece a la clase, y no a una única instancia
de la clase. Tendrías que crear la lista que guarde los puntos de cada
instancia en la función __init__. Algo así:

class lista:
    def __init__(self):
       self.puntos=[]
    def addPunto(self, punto):
       self.puntos.append(punto)

En un post antiguo de mi blog tengo una explicación un poco más
detallada que te puede ayudar a tener una visión más general del asunto:
http://blog.rvburke.com/2006/11/22/programacion-orientada-a-objetos-en-python/

Saludos,

Rafael Villar Burke

_______________________________________________
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