[pyar] Pregunta de clases

Luis I. Facciolo lifacciolo en gmail.com
Mar Mar 26 14:47:21 ART 2013


El 26 de marzo de 2013 14:30, Sebastian Scheib
<stackpointerex en gmail.com>escribió:

> Buenas, estoy probando algunas cosas con Python (volviendo a acostumbrarme
> a Python que no lo tocaba hace tiempo) y me pasa algo.
>
> Tengo esto:
>
> class aaa:
>     texto=[]
>     def __init__(self,aaa):
>         if aaa=="1":
>             self.texto.append("hola")
>         if aaa=="2":
>             self.texto.append("chau")
>
> pepe=aaa("1")
> gomez=aaa("2")
> print pepe.texto
> print "--------"
> print gomez.texto
>
> La salida de esto me da:
>
> ['hola', 'chau']
> --------
> ['hola', 'chau']
>
> No debería la salida de pepe darme hola y la de gomez chau? Cual sería la
> forma correcta de que esto suceda?
>
> Gracias.
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

En este caso, para lo que vos queres lograr, seria asi:

class aaa:
    def __init__(self, aaa):
        self.texto = []
        if aaa=="1":
            self.texto.append("hola")
        if aaa=="2":
            self.texto.append("chau")

pepe=aaa("1")
gomez=aaa("2")
print pepe.texto
print "--------"
print gomez.texto

output:
['hola']
--------
['chau']

Porque?

Porque al definir texto, afuera del __init__, directamente en la clase, lo
estas declarando como variable de CLASE y no de la instancia misma.
Justamente para eso tenes el __init__, para declarar cosas inherentes a esa
instancia de la clase, dentro de la coleccion self.

Al ser una variable de clase, es una variable que compraten entre TODAS LAS
INSTANCIAS de la misma clase.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130326/c2d6df7d/attachment.html>


More information about the pyar mailing list