Pythonでは、あるオブジェクトが特定のクラスのインスタンスかどうかをチェックするためにisinstance
関数を使用します。この関数は、オブジェクトとクラスを引数として受け取り、オブジェクトがそのクラスのインスタンスである場合はTrue
を返します。
class MyClass(object):
pass
m1 = MyClass()
print(isinstance(m1, MyClass)) # => True
また、isinstance
関数は、クラスが継承元の場合にもTrue
を返します。これは、type
関数との主な違いで、type
関数はオブジェクトの直接の型のみをチェックします。
class Parent(object):
pass
class Child(Parent):
pass
c1 = Child()
print(isinstance(c1, Parent)) # => True
さらに、isinstance
の第二引数をタプルにすることで、複数のクラスに対して一度にクラス・インスタンス関係を調べることも可能です。
class A(object):
pass
class B(object):
pass
b1 = B()
print(isinstance(b1, (A, B))) # => True
これらの特性により、isinstance
関数はPythonでの型チェックにおいて非常に有用です。ただし、isinstance
関数はオブジェクトの実際の型を返さないため、型情報が必要な場合はtype
関数を使用することを検討してください。