どうも!たっくんです!
以前、Pythonで型を確認する方法をご紹介しましたが、「type() 」と 「isinstance() 」の使い分けをご紹介したいと思います!
type
typeは、引数に渡されたオブジェクトのクラスを返す関数です。なので、何のクラスのインスタンスなのか正確に調べたい時に使用します。
class Node(object): pass class Material(Node): pass obj = Material() if type(obj) is Node: print 'Node True' if type(obj) is Material: print 'Material True' # Material True
例えば、PySideを使っている時に、特定のWidgetの場合だけ処理したい時に便利ですね!(*´ω`*)b
isinstance
isinstanceは、第1引数のオブジェクトが、第2引数のクラス(または、スーパークラス)の関係にあれば True を返す関数です。継承されたクラスも含めて調べたい時に使用します。
class Node(object): pass class Material(Node): pass obj = Material() if isinstance(obj, Node): print 'Node True' if isinstance(obj, Material): print 'Material True' # Node True # Material True
例えば、PySideを使っている時に、QWidgetを元にしたもであれば処理したい時に便利ですね!(*´ω`*)b
まとめ!
面倒だからっと「isinstance」だけを使っていると、派生しているクラスも対象になってしまう場合があるのでご注意ください!(`・ω・´)ゞ