Python オブジェクトを操作する場合、多くの場合、その型やオブジェクトかどうかを判断する必要があります。特定のクラスに属します。 Python には、このタスクによく使用される 2 つのメソッド、type() と isinstance() が用意されています。この記事では、これら 2 つの関数の違いを調査し、それぞれのアプリケーションについて説明します。
type() 関数は、オブジェクトの型を型オブジェクトとして返します。 Type オブジェクトは、その型のインスタンスではなく、値の型を表します。オブジェクトが特定の型であるかどうかを判断するには、オブジェクトの型が、目的の型を表す型オブジェクトと比較されます。
例:
a = 1 b = "Hello" print(type(a)) # <class 'int'> print(type(b)) # <class 'str'>
この場合、次のように入力します。 (a) は int クラスを表す型オブジェクトを返しますが、type(b) は str クラスを表す型オブジェクトを返します。
isinstance() 関数は、オブジェクトが特定のクラスのインスタンスであるか、そのクラスのサブクラスであるかを確認します。最初の引数としてオブジェクトを受け取り、2 番目の引数としてクラスまたはクラスのタプルを受け取ります。 isinstance() は、オブジェクトが指定されたクラスまたはサブクラスのインスタンスである場合は True を返し、それ以外の場合は False を返します。
次の例を考えてみましょう。
a = 1 b = [1, 2, 3] print(isinstance(a, int)) # True print(isinstance(b, list)) # True
この例では、 isinstance(a, int ) a は int クラスのインスタンスであるため、True を返します。同様に、 b はリスト クラスのインスタンスであるため、 isinstance(b, list) は True を返します。
type() と isinstance() の主な違いは、type() であることです。 isinstance() はオブジェクト型の同一性をチェックし、継承関係をチェックします。 isinstance() は継承を考慮します。つまり、特定のクラスから継承するオブジェクトもそのクラスのインスタンスとみなされます。一方、type() は型の同一性を厳密にチェックし、継承は考慮しません。
一般に、興味がある場合は isinstance() を使用することをお勧めします。オブジェクトが特定のクラスに属するか、そのサブクラスの 1 つであるかを判断する際に使用されます。これは、複雑なオブジェクト階層を扱う場合に特に便利です。
継承が考慮されない単純な型チェックの場合、より高速な代替手段として type() を使用できます。
以上がPython type() と isinstance(): いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。