type()とisinstance()の使い分け!!




takkun
どうも!たっくんです!

以前、Pythonで型を確認する方法をご紹介しましたが、「type() 」と 「isinstance() 」の使い分けをご紹介したいと思います!

このデータは何?変数の型をチェックする方法!!

2017.09.21

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」だけを使っていると、派生しているクラスも対象になってしまう場合があるのでご注意ください!(`・ω・´)ゞ