[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