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