[pyar] Pregunta de clases

fisa fisadev en gmail.com
Mar Mar 26 17:02:01 ART 2013


El día 26 de marzo de 2013 14:56, Sebastian Scheib
<stackpointerex en gmail.com> escribió:
> Muchísimas gracias a todos, ahora lo entendí.
>
>
> El 26 de marzo de 2013 14:55, Ramiro Morales <cramm0 en gmail.com> escribió:
>>
>> On Mar 26, 2013 2:30 PM, "Sebastian Scheib" <stackpointerex en gmail.com>
>> wrote:
>> >
>> > 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?
>>
>> texto es un atributo de la clase aaa, no es un atributo de las instancias
>> de aaa. Por esa razón es compartido por todas las instancias.
>>
>> Si queres que sean atributos de instancia tenes que no declararlo a nivel
>> clase e inicializalo en un metodo, usualmente el inicializador __init__
>>
>>

Como detalle extra, para ahorrarte futuros dolores de cabeza, a las
clases nombralas con CamelCase. Lo digo porque ya veo en ese ejemplo
una clase y un parámetro que se llaman igual, tarde o temprano en
algún punto algo no va a ser la cosa que esperabas que fuese :)

Y si tenés un poco más de ganas, mirate PEP8, que incluye esa regla y
unas cuantas más sobre cómo se formatea el código python normalmente.

Saludos!

--
fisa  -  Juan Pedro Fisanotti



More information about the pyar mailing list