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