Comprobar la clase del parametro de una funcion

Juan Ignacio Rodriguez de Leon jileon en parcan.es
Mar Mayo 24 16:00:29 CEST 2005


Ricardo Catalinas Jimenez wrote:

>Me ha parecido muy interesante la propuesta de los `decoradores', aunque
>es una solucion un tanto compleja.
>
>Como ya he comentado en otro post estoy planteandome si estoy que yo
>estaba buscado es algo que merece la pena, o si por contra, python
>requiere de otra metodologia.
>  
>

Quizá una solución mejor para lo que quieres (Atrapar errores durante la 
programación)
sería usar assert(). Me explico con un ejemplo:

def suma(a,b):
    assert type(a) = type(0), 'El parametro a (%s) no es un entero' % a
    assert type(b) = type(0), 'El parametro b (%s) no es un entero' % b
    return a + b

La ventaja del assert es que eleva una excepción, pero se puede desabilitar
el codigo de assert (y no consumir ciclos de CPU en estas comprobaciones en
la aplicación final) pasandole la opción -O al interprete de Python.

De todas formas, no veo esto muy pythonico. Si quitas los assert la 
funcion tambien
serviría, por ejemplo, para concatenar cadenas, o para sumar mis propios 
tipos de datos
si he programado mis clases para que puedan ser sumadas... Para eso sirve el
polimorfismo.

Hay una explicación del assert en esta misma lista, concretamente aquí:

http://listas.aditel.org/archivos/python-es/2005-February/012248.html




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