ページへ戻る

 印刷 

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

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

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を使った方が便利です。


Last-modified: 2017-01-03 (火) 04:35:42 (JST) (2669d) by njf