[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