[pyar] Consulta sonsa

Julio César Gázquez julio en mebamutual.com.ar
Mie Abr 4 09:39:42 ART 2012


Lo que me resulta más interesante de este tema es lo siguiente:

 >>> class Foo():
...      bar = 'bip'
...
 >>> f = Foo()
 >>> Foo.bar
'bip'
 >>> f.bar
'bip'
 >>> f.bar = 'ping'
 >>> Foo.bar
'bip'
 >>> f.bar
'ping'

Es decir, el atributo de clase se puede acceder indistintamente a través 
de la clase o de uno de sus objetos, pero apenas uno asigna sobre un 
objeto se crea un atributo nuevo del objeto.

Supongo que es una forma económica de trabajar cuando tengo muchos 
objetos de Foo y sólo en algunos pocos objetos me interesa tener un 
valor diferente (y arbitrario) de bar, a cambio el acceso entiendo que 
es más lento. Como contrapartida, me parece un comportamiento de los que 
hacen fácil meter la pata si uno no es disciplinado.

Si alguno no se termina de marear, prueben hacer una subclase Foo2 de 
Foo y un objeto f2 de la subclase, ahí se van a encontrar que f2.bar 
puede referirse a un atributo de f2, de Foo2 o de Foo, la resolución del 
atributo va subiendo por la jerarquía de clases!

Saludos!



/Ing. Julio César Gázquez / MEBA - Mutual de Empleados del Banco/ /
                Mitre 923 1º Piso
                0341- 4110533 / 4265010 / 0800 9990452
                S2000COS ROSARIO//
/
*16 resmas = 1 árbol*
Razón suficiente para pensar si es necesario imprimir este correo

El 02/04/12 23:18, Martin Cerdeira escribió:
> On Sun, Apr 1, 2012 at 1:41 AM, Alejandro J. Cura 
> <alecu en protocultura.net <mailto:alecu en protocultura.net>> wrote:
>
>     On Sat, Mar 31, 2012 at 18:03, Martin Cerdeira
>     <martincerdeira en gmail.com <mailto:martincerdeira en gmail.com>> wrote:
>     > Digamos, quiero saber si la clase tiene el atributo,
>     independientemente de
>     > si depende o no de la instancia... No sé si se puede hacer eso.
>
>     Si lo tiene la clase, lo tiene la clase.
>     Si lo tiene la instancia, lo tiene la instancia.
>
>     La única manera de saber si lo tiene *alguna* de las instancias de la
>     clase, es guardar tooooodas las instancias y ver si alguna lo tiene:
>
>     >>> class F:
>     ...     pass
>     ...
>     >>> f1=F()
>     >>> f2=F()
>     >>> f3=F()
>     >>> f3.bar = "baz"
>     >>> any("bar" in vars(i) for i in [f1, f2, f3])
>     True
>
>
>     Pero me parece que si necesitás hacer eso, es que hay algo feo en el
>     diseño de tu código.
>     Porqué no contás un poco más que querés hacer?
>
>
> En realidad, no quiero hacer nada. Fue algo que vi haciendo pruebas 
> relativas a otra cosa (estaba jugando con metaclases) y, me pregunté 
> si se podía hacer.
>
> Saludos y gracias!
> -------------------------------------
> Martín Cerdeira - Software Developer
> At the end of the day, ship the fucking thing! It's great to rewrite 
> your code and make it cleaner and by the third time it'll actually be 
> pretty. But that's not the point---you're not here to write code; 
> you're here to ship products. - Jamie Zawinski
>
>
>
>
> _______________________________________________
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120404/f1be0a39/attachment.html>


More information about the pyar mailing list