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