[pyar] sobre atributos y __dict__

Lucas rollbak en gmail.com
Lun Feb 21 23:45:39 ART 2011


2011/2/21 #Mike - <michael.ibarra en gmail.com>:
> Tengo una duda cuando se define una clase y luego desde una instancia
> se crea un atributo de esta manera:
> obj.__class__.attr="value" , y cual es la diferencia con obj.attr1="value1"
>
> Aqui unas pruebas que estuve haciendo pero aún no la termino de captar:
>
> In [69]: class test1:
>   ....:     classattr="hola mundo"
>
> In [70]: z=test1()
>
> In [73]: z.__dict__
> Out[73]: {}
>
> In [75]: test1.__dict__
> Out[75]: {'__doc__': None, '__module__': '__main__', 'classattr': 'hola mundo'}
>
> In [76]: z.__class__.instattr="Hola universo"
>
> In [77]: z.__dict__
> Out[77]: {}
>
> In [78]: test1.__dict__
> Out[78]:
> {'__doc__': None,
>  '__module__': '__main__',
>  'classattr': 'hola mundo',
>  'instattr': 'Hola universo'}
>
> In [79]: z.instattr="Hola continente"
>
> In [80]: z.__dict__
> Out[80]: {'instattr': 'Hola continente'}
>
> In [81]: test1.__dict__
> Out[81]:
> {'__doc__': None,
>  '__module__': '__main__',
>  'classattr': 'hola mundo',
>  'instattr': 'Hola universo'}
>
>
> http://pastebin.com/ddLzRDrp
> --
> Michael Ibarra
> _______________________________________________
> 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/
>

obj.__class__.attr="value" , en este caso estas creando un atributo de
clase (este attributo va a tener el mismo valor para todas las
instancias de la clase)
obj.attr1="value1", en este otro caso estas creando un atributo de
instancia (este solo va a existir en el objecto en el que lo creaste.

Por otro lado, cuando accedes a ambos a traves de una instancia python
por su MRO siempre te devuelve el atributo de instancia.

saludos,
-- 
Lucas



More information about the pyar mailing list