Type function

Oswaldo Hernández listas en soft-com.es
Jue Dic 28 16:40:20 CET 2006


Chema Cortes escribió:
> El 27/12/06, Oswaldo Hernández<listas en soft-com.es> escribió:
> 
>> No conocia la funcion 'callable'.
>>
>> Haciendo unas pruebas con ella veo que cuando se utiliza con clases 
>> devuelve true, mientras que
>> hasattr(clase, "__call__") devuelve false, lo que es mejor para mis 
>> intenciones.
> 
> En python, para mi gusto, el tratar las funciones como objetos de
> "primera clase" (http://en.wikipedia.org/wiki/First-class_function) no
> está del todo bien resuelto. El tipo "function" no existe como tal,
> por lo que no se pueden crear subtipos de él, por ejemplo. Para
> chequeos, el tipo "function" se obtiene como types.FunctionType
> 
>>>> import types
>>>> type(lambda x:x) is types.FunctionType
> True
> 
> 
> Como bien dices, por "callables" se consideran a las funciones y a las 
> clases.

Tampoco me acordaba del modulo types. :(

Al final he creado una pequeña funcion para realizar la evaluación que comprueba funciones y metodos 
  de clase:


 >>> def EsFuncion(f):
...     return type(f) is types.FunctionType or type(f) is types.MethodType
...
 >>> def f():
...     pass
...
 >>>
 >>> class c:
...     def f(self):
...         pass
...
 >>> c1 = c()
 >>>
 >>> EsFuncion(f)
True
 >>> EsFuncion(c1.f)
True
 >>>

Gracias a todos por la ayuda.

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************




Más información sobre la lista de distribución Python-es