2009-05-14 11 views
12

Ho bisogno di verificare se una variabile è un modulo o meno. Come farlo nel modo più pulito?come isinstance (x, modulo)?

Ho bisogno di questo per inizializzare la funzione di un dispatcher e voglio che la funzione possa accettare sia dict che modulo come argomento.

+1

Inoltre, è davvero necessario verificare il tipo di argomento? Se la funzione fa qualcosa di completamente diverso in base al tipo di argomento che ottiene, allora sicuramente, devi controllare, ma altrimenti è solitamente più "Pythonic" a non controllare esplicitamente i tipi. –

+0

Il modo pythonic consiste nel verificare la presenza di metodi e variabili. Se ce ne sono troppi da controllare, allora è preferibile l'istanza. – Unknown

+0

Bene, il modo Pythonic è "controllare" semplicemente usando quelli che ti servono, e se qualcosa che dovrebbe esistere no, Python solleva un errore. Non vedo come potrebbero esserci troppe proprietà da "controllare" se le userai comunque tutte. –

risposta

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

(Funziona anche per i propri moduli Python, così come quelle built-in come os.)

+0

Grazie! Funziona perfettamente! –

4

mi piace usare questo modo non c'è bisogno di importare il modulo tipi:

isinstance(amodule, __builtins__.__class__) 
Problemi correlati