1: 2017-01-03 (火) 04:28:00 njf |
現: 2017-01-03 (火) 12:35:42 njf |
| 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 |
| そのため、せっかくスーパークラスと同じように使えるようにクラスを継承したのに、そのクラスが同じ処理で使えなくなってしまい、あまり使い勝手は良くありません。 | | そのため、せっかくスーパークラスと同じように使えるようにクラスを継承したのに、そのクラスが同じ処理で使えなくなってしまい、あまり使い勝手は良くありません。 |
| | | |
- | そのため、型チェックは継承まで含めてチェックするisinstanceの方が便利です。 | + | これを回避するためには、継承まで含めて型チェックするisinstanceを使います。 |
| | | |
| 先ほどの例で言うとunicodeとstrは同じbasestringを継承しているので、 | | 先ほどの例で言うとunicodeとstrは同じbasestringを継承しているので、 |
| True | | True |
| | | |
- | となり、isinstanceは文字列的なクラスをTrueにしてくれます。 | + | となり、isinstanceは両方ともTrueになります。 |
| + | 基本的に型チェックはisinstanceを使った方が便利です。 |