ページへ戻る

− Links

 印刷 

Python​/型の判定(type,isinstance) のソース :: NJF Wiki

xpwiki:Python/型の判定(type,isinstance)のソース

« Prev[3]  
Pythonでは型の判定にtypeやisinstanceを使います。

typeは厳密にその型を何かを判定するのに使います。

 # -*- coding: utf-8 -*-
 testString = "test"
 utfTestString = u"テスト"
 
 print type(testString)
 print type(utfTestString)
 
 print type(testString) == str
 print type(utfTestString) == str

結果
 <type 'str'>
 <type 'unicode'>
 True
 False

ただし、typeによる判定は、継承したクラスもFalseにしてしまいます。
そのため、せっかくスーパークラスと同じように使えるようにクラスを継承したのに、そのクラスが同じ処理で使えなくなってしまい、あまり使い勝手は良くありません。

これを回避するためには、継承まで含めて型チェックするisinstanceを使います。

先ほどの例で言うとunicodeとstrは同じbasestringを継承しているので、

 print isinstance(testString, basestring)
 print isinstance(utfTestString, basestring)

結果
 True
 True

となり、isinstanceは両方ともTrueになります。
基本的に型チェックはisinstanceを使った方が便利です。

« Prev[3]