2009-05-14 23 views
12

Necesito comprobar si una variable es un módulo o no. ¿Cómo hacer esto de la manera más limpia?cómo isinstance (x, module)?

Necesito esto para inicializar alguna función de despachador y quiero que la función pueda aceptar ya sea dicto o módulo como argumento.

+1

Además, ¿realmente necesita verificar el tipo de argumento? Si la función hace algo totalmente diferente en función de qué tipo de argumento se obtiene, entonces, seguro, debe verificarlo, pero de lo contrario es más "pitónico" no verificar tipos explícitamente. –

+0

La manera pythonic es verificar la presencia de métodos y variables. Si hay demasiados para verificar, entonces se prefiere la instancia. – Unknown

+0

Bueno, la forma Pythonic es "verificar" simplemente usando las que necesita, y si algo que debería existir no lo hace, Python genera un error. No veo cómo podría haber demasiadas propiedades para "verificar" si va a usarlas todas de todos modos. –

Respuesta

24
>>> import os, types 
>>> isinstance(os, types.ModuleType) 
True 

(También funciona para sus propios módulos de Python, así como las integradas como os.)

+0

¡Gracias! ¡Funciona perfectamente! –

4

me gusta usar esto para que no tenga que importar el módulo tipos:

isinstance(amodule, __builtins__.__class__)