1: 2017-01-03 (火) 04:28:00 njf[4] [5] [6] | 現: 2017-01-03 (火) 12:35:42 njf[4] [7] [8] | ||
---|---|---|---|
Line 6: | Line 6: | ||
testString = "test" | testString = "test" | ||
utfTestString = u"テスト" | utfTestString = u"テスト" | ||
+ | |||
+ | print type(testString) | ||
+ | print type(utfTestString) | ||
+ | |||
print type(testString) == str | print type(testString) == str | ||
print type(utfTestString) == str | print type(utfTestString) == str | ||
結果 | 結果 | ||
+ | <type 'str'> | ||
+ | <type 'unicode'> | ||
True | True | ||
False | False | ||
Line 17: | Line 22: | ||
そのため、せっかくスーパークラスと同じように使えるようにクラスを継承したのに、そのクラスが同じ処理で使えなくなってしまい、あまり使い勝手は良くありません。 | そのため、せっかくスーパークラスと同じように使えるようにクラスを継承したのに、そのクラスが同じ処理で使えなくなってしまい、あまり使い勝手は良くありません。 | ||
- | そのため、型チェックは継承まで含めてチェックするisinstanceの方が便利です。 | + | これを回避するためには、継承まで含めて型チェックするisinstanceを使います。 |
先ほどの例で言うとunicodeとstrは同じbasestringを継承しているので、 | 先ほどの例で言うとunicodeとstrは同じbasestringを継承しているので、 | ||
Line 28: | Line 33: | ||
True | True | ||
- | となり、isinstanceは文字列的なクラスをTrueにしてくれます。 | + | となり、isinstanceは両方ともTrueになります。 |
+ | 基本的に型チェックはisinstanceを使った方が便利です。 |
(This host) = https://njf.jp