2009-05-14 8 views
12

Je dois tester si une variable est un module ou non. Comment faire cela de la manière la plus propre?comment isinstance (x, module)?

J'ai besoin de ceci pour initialiser une fonction de répartiteur et je veux que la fonction accepte le dict ou le module comme argument.

+1

Aussi, avez-vous vraiment besoin de vérifier le type de l'argument? Si la fonction fait quelque chose de totalement différent en fonction du type d'argument qu'elle obtient, alors bien sûr, vous devez vérifier, mais sinon, c'est généralement plus "Pythonic" de ne pas vérifier les types explicitement. –

+0

La méthode pythonique consiste à vérifier la présence de méthodes et de variables. S'il y en a trop à vérifier, isinstance est préféré. – Unknown

+0

Eh bien, la méthode Pythonic consiste à «vérifier» en utilisant simplement celles dont vous avez besoin, et si quelque chose qui devrait exister ne le fait pas, Python déclenche une erreur. Je ne vois pas comment il pourrait y avoir trop de propriétés à "vérifier" si vous allez les utiliser toutes de toute façon. –

Répondre

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

(Il fonctionne aussi pour vos propres modules Python, ainsi que ceux intégrés comme os.)

+0

Merci! Cela fonctionne parfaitement! –

4

J'aime utiliser ce que vous ne devez pas importer le module types:

isinstance(amodule, __builtins__.__class__)