[pyar] sobre atributos y __dict__

Pablo Ziliani pablo en kultroom.com
Lun Feb 21 23:56:48 ART 2011


On 02/21/2011 10:25 PM, #Mike - wrote:
> 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"

Mike, en tus pruebas queda bastante clara la diferencia.

A través del atributo __class__ de una instancia se accede a su clase. 
Al asignarle un atributo a __class__ estás en la práctica asignándolo a 
su clase. En tu ejemplo, esto es equivalente a haber puesto el atributo 
directamente en la definición de la clase.

Quizás no tengas tan claro que hay dos namespaces: el de la instancia y 
el de la clase. Cuando llamás al atributo de una instancia, python 
primero se fija en su namespace y si no está definido, busca en su clase 
y luego en sus superclases.

Si te interesa el tema, podés ver la ayuda en inglés:
   - http://docs.python.org/reference/datamodel.html

o esta página del tutorial en castellano:
   - http://docs.python.org.ar/tutorial/classes.html (seguramente habrán 
mejores referencias en castellano)




More information about the pyar mailing list