2009-05-14 8 views
12

変数がモジュールであるかどうかをテストする必要があります。どのようにこれを最もクリーンな方法で行うのですか?isinstance(x、module)の使い方

ディスパッチャ関数を初期化するためにこれが必要です。この関数は、dictまたはmoduleを引数として受け入れることができます。

+1

また、実際に引数のタイプを確認する必要がありますか?関数が引数の種類に基づいて全く異なる何かをする場合、確かにチェックする必要がありますが、そうでない場合は、通常は型を明示的にチェックしないようにするのがよりPythonicです。 –

+0

pythonic方法は、メソッドと変数の存在をチェックすることです。チェックすることが余りにも多い場合は、isinstanceが優先されます。 – Unknown

+0

Pythonの方法は、必要なものだけを使って「チェック」することです。存在しなければならないものがあれば、Pythonはエラーを発生させます。とにかくそれらをすべて使うつもりなら、 "チェック"するにはあまりにも多くのプロパティがあるかもしれません。 –

答えて

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

(それはまた、独自のPythonモジュールと同様に、osのような組み込みのもののために働く。)

+0

ありがとう!それは完全に動作します! –

4

私はあなたがタイプのモジュールをインポートする必要はありませんので、これを使用したい:

isinstance(amodule, __builtins__.__class__) 
関連する問題