clases

Alberto Valverde alberto en toscat.net
Lun Nov 10 13:29:54 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 un atributo mutable de la clase, no la instancia, por lo que 
al modificarlo todas las instancias "ven" los cambios. Lo que necesitas 
es crear un atributo "puntos" en cada instancia cuando la inicialias:

class lista:
    def __init__(self):
        self.puntos = []
    def addPunto(self, punto):
        # retocado para no tener que crear una nueva lista cada vez que 
aniades un punto
        self.puntos.append(punto)

Alberto
_______________________________________________
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