type()とisinstance()の違いは何ですか?
この2つのコードフラグメントの違いは何ですか? type()`を使用しています。
import types
if type(a) is types.DictType:
do_something()
if type(b) in types.StringTypes:
do_something_else()
isinstance()`を使用した場合。
if isinstance(a, dict):
do_something()
if isinstance(b, str) or isinstance(b, unicode):
do_something_else()
1153
3
ここでは、
type
では実現できないことをisinstance
で実現している例を紹介します。この場合、トラックオブジェクトはVehicleですが、次のようになります。
つまり、
isinstance
はサブクラスにも当てはまるのです。以下もご参照ください:
後者の方がサブクラスを適切に扱うことができるので、好ましいです。実際,あなたの例はもっと簡単に書くことができます。なぜなら,
isinstance()
'の2番目のパラメータはタプルでもよいからです。または,抽象クラス
basestring
を使っています。pythonのドキュメントによると、以下のような記述があります。
そのため、type()`よりも
isinstance()
の方が好まれます。