1: 2017-01-03 (火) 04:28:00 njf[5] [6] [7] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Pythonでは型の判定にtypeやisinstanceを使います。 | ||
+ | typeは厳密にその型を何かを判定するのに使います。 | ||
+ | |||
+ | # -*- coding: utf-8 -*- | ||
+ | testString = "test" | ||
+ | utfTestString = u"テスト" | ||
+ | |||
+ | print type(testString) == str | ||
+ | print type(utfTestString) == str | ||
+ | |||
+ | 結果 | ||
+ | True | ||
+ | False | ||
+ | |||
+ | ただし、typeによる判定は、継承したクラスもFalseにしてしまいます。 | ||
+ | そのため、せっかくスーパークラスと同じように使えるようにクラスを継承したのに、そのクラスが同じ処理で使えなくなってしまい、あまり使い勝手は良くありません。 | ||
+ | |||
+ | そのため、型チェックは継承まで含めてチェックするisinstanceの方が便利です。 | ||
+ | |||
+ | 先ほどの例で言うとunicodeとstrは同じbasestringを継承しているので、 | ||
+ | |||
+ | print isinstance(testString, basestring) | ||
+ | print isinstance(utfTestString, basestring) | ||
+ | |||
+ | 結果 | ||
+ | True | ||
+ | True | ||
+ | |||
+ | となり、isinstanceは文字列的なクラスをTrueにしてくれます。 |
(This host) = https://njf.jp