[pyar] getattr y similar para métodos de clase?
John Rowland Lenton
john.lenton en canonical.com
Sab Jun 12 18:42:42 ART 2010
On Sat, Jun 12, 2010 at 11:21:08PM +0200, Juanjo Conti wrote:
> Cuando en una clase definimos __getattr__, el método es llamado cada vez que
> se pide a un objeto de esa clase un atributo, y este no existe.
>
> Lo anterior permite que un objeto pueda responder en forma dinámica a la
> solicitud de atributos. Podemos hacer algo similar con las clases y sus
> métodos de clases?
>
> A qué me refiero? Algo así:
>
> class C:
> # magic
>
> >>> C.algo
> 'algo'
claro!
In [1]: class M(type):
...: def __getattr__(self, attr):
...: return 42
...:
...:
In [2]: class C(object):
...: __metaclass__ = M
...:
In [3]: C.foo
Out[3]: 42
si no te gusta la magia de __metaclass__, podés usar
M('magic', (object,), {})
como superclase de C, en vez de object; es lo mismo. No estoy seguro
de que sea más claro :)
...
la conclusión de esto debería ser, una vez más, que la distinción
entre clases y objetos en python es como la distinción entre
electricidad y magnetismo: girá la cabeza un poquito y te das cuenta
de que son la misma cosa.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: Digital signature
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100612/d741a2a7/attachment.sig>
More information about the pyar
mailing list