isinstance関数の使い方(オブジェクトのデータ型を判定する)

Python で用意されている組み込み関数の中の isinstance 関数の使い方です。 isinstance 関数はオブジェクトのデータ型の判定に使用します。

(Last modified: )

isinstance関数の書式と基本的な使い方

isinstance 関数は 1 番目の引数に指定したオブジェクトが 2 番目の引数に指定したデータ型と等しいかどうかを返します。 isinstance 関数の書式は次の通りです。

isinstance(object, classinfo)

1 番目の引数に指定したオブジェクトが 2 番目の引数に指定したデータ型のオブジェクトかサブクラスのオブジェクトの場合に True を返します。

例えば次のように使います。

print(isinstance(1, int))
>> True
print(isinstance(1, str))
>> False
print(isinstance("abc", str))
>> True
print(isinstance("abc", int))
>> False

複数のデータ型と比較する場合には、 2 番目に引数として複数のデータ型を要素としてもつタプルを指定してください。複数のデータ型のいずれかと一致すれば True となります。

print(isinstance(1, (int, float)))
>> True
print(isinstance(2.5, (int, float)))
>> True
print(isinstance("ab", (int, float)))
>> False

isinstance 関数と type 関数の違いとして、 isinstance 関数は 2 番目の引数に指定したデータ型のサブクラスのオブジェクトであっても真となります。その為、サブクラスも含めて同じデータ型かどうか調べたい場合には isinstance 関数を使うと便利です。

print(isinstance(3, int))
>> True
print(isinstance(True, int))
>> True
print(>isinstance(True, bool))
>> True

bool 型は int 型のサブクラスのため、 bool 型のオブジェクトである True は int 型と同じかどうか調べた場合に真となります。

※ type 関数については「type関数の使い方(オブジェクトの型を取得する)」を参照されてください。

サンプルコード

次のサンプルを見てください。

mylist = [2, "ab", 3.5, True, 4]
total = 0

for val in mylist:
    if isinstance(val, (int, float)):
        print("val:" + str(val))
        total += val

>> val:2
>> val:3.5
>> val:True
>> val:4

print("total:" + str(total))
>> total:10.5

リストに格納された値のデータ型を調べ、整数型または浮動小数点数型だった場合は値を出力して合計を計算しました。今回の場合は True も整数型として識別されています( True は数値の 1 として扱われます)。

-- --

Python の組み込み関数の一つである isinstance 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。