Python isinstance() 関数

Python3 内置函数Python3 組み込み関数


isinstance()は、オブジェクトが指定された型(または型タプル内の任意の型)のインスタンスであるかをチェックするためのPythonの組み込み関数です。

isinstance()は、Pythonで最もよく使われる型チェック関数で、正確な型だけでなく継承関係も考慮します(サブクラスも親クラスのインスタンスです)。

単語の意味: isinstance 是 is an instance(是一个实例)的缩写。


基本構文とパラメータ

構文形式

isinstance(object, classinfo)

パラメータ説明

  • パラメータ object:
    • 型:任意のオブジェクト
    • 説明:チェックするオブジェクト。
  • パラメータ classinfo:
    • 型:型、型タプル、または抽象基底クラス
    • 説明:チェックする型。単一の型でも型タプルでも指定できます。

関数説明

  • 戻り値:ブール値を返しますTrue 或 False。
  • 特徴:object が classinfo のサブクラスのインスタンスである場合も True を返します。

例

例1:基本の使い方

例

# 基本型をチェック
print(isinstance(123, int))           # 出力: True
print(isinstance(3.14, float))        # 出力: True
print(isinstance("hello", str))       # 出力: True
print(isinstance([1, 2], list))       # 出力: True
print(isinstance({"a": 1}, dict))     # 出力: True

# None をチェック
print(isinstance(None, type(None)))   # 出力: True

# ブール値をチェック(注意:bool は int のサブクラス)
print(isinstance(True, bool))         # 出力: True
print(isinstance(True, int))          # 出力: True(bool は int を継承しているため)

実行結果の期待値:

True
True
True
True
True
True
True
True

コードの解説:

  1. さまざまな基本型をチェックできます。
  2. bool は int のサブクラスなので、True/False も int のインスタンスです。

例2:型タプルの使用

例

# 複数の型をチェック(タプルを使用)
value = 42

print(isinstance(value, (int, float)))    # 出力: True
print(isinstance(value, (str, list)))     # 出力: False

# 複数の型を混合してチェック
value = "hello"
print(isinstance(value, (int, str, bytes))) # 出力: True

# 条件判断に使用
def process_data(data):
    if isinstance(data, (list, tuple)):
        return sum(data)
    elif isinstance(data, (int, float)):
        return data * 2
    else:
        return str(data)

print(process_data([1, 2, 3]))     # 出力: 6
print(process_data((1, 2, 3)))    # 出力: 6
print(process_data(10))           # 出力: 20
print(process_data(3.14))         # 出力: 6.28
print(process_data("hello"))      # 出力: hello

実行結果の期待値:

True
False
True
6
6
20
6.28
hello

コードの解説:

  • 2番目のパラメータは型タプルにでき、複数の型を同時にチェックできます。
  • これは複数のデータ型を扱うときに非常に便利です。

例3:クラスの継承と

例

# クラス継承の例
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

# インスタンスを作成
dog = Dog()
cat = Cat()
animal = Animal()

# isinstance は継承関係を考慮します
print(isinstance(dog, Dog))      # 出力: True
print(isinstance(dog, Animal))   # 出力: True(サブクラスのインスタンスも親クラスのインスタンス)
print(isinstance(dog, Cat))      # 出力: False

print(isinstance(cat, Animal))   # 出力: True
print(isinstance(animal, Dog))   # 出力: False

実行結果の期待値:

True
True
False
True
False

isinstance()継承チェーンがチェックされるため、サブクラスのインスタンスも親クラスのインスタンスとみなされます。


Python3 内置函数Python3 組み込み関数


その他の拡張