clases

Chema Cortes pych3m4 en gmail.com
Lun Nov 10 13:38:06 CET 2008


El día 10 de noviembre de 2008 11:55, Pablo Martin Rodriguez
<ustrum en gmail.com> escribió:
> 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

El atributo "puntos" está definido como atributo de clase, por lo que
es compartido por todas las instancias. Los atributos específicos de
cada instancia se tienen asignar desde el inicializador (__init__),
una vez que se ha creado la instancia:

class Lista:
  def __init__(self):
    self.puntos=[]

  def addPunto(self,punto):
    self.puntos.append(punto)
_______________________________________________
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