[pyar] Saber si algo es un método
SAn
gringotumadre en gmail.com
Mie Jun 9 14:07:56 ART 2010
2010/6/9 Juanjo Conti <jjconti en gmail.com>:
> Lista, estaba revisando un programa mío y en una parte quería saber si
> cierto atributo de un objeto era un método o no. Lo hice con
>
> if inspect.ismethod(attr) or inspect.ismethoddescriptor(attr):
>
> pero me puse a pensar y me surgió una duda, que tal si en un atributo de un
> objeto almacenamos una función para utilizar luego o para pasarla como
> parámetro a otro objeto y tenemos:
>
>>>> import inspect
>>>> class A:
> ... pass
> ...
>>>> def f():
> ... pass
> ...
>>>> A.g = f
>>>> inspect.ismethod(A.g)
> True
>
> Yo esperaba que de False. Pero...
>
>>>> type(A.g)
> <type 'instancemethod'>
>>>> type(f)
> <type 'function'>
>
> Por lo visto cuando se asigna una función a un atributo, se la glorifica en
> método.
Y si es un atributo que implementa __call__ o alguna cosa magica te
interesa agarrarlo? Si fuera por ahi con un try except tratando de
hacer la llamada y agarrando TypeError.
saludos,
SAn
More information about the pyar
mailing list