Pythonでは、isinstance
関数を使用してオブジェクトが特定のクラスのインスタンスであるかどうかを判定することができます。この関数は、オブジェクトが指定されたクラスまたはタプルで指定されたクラスのいずれかのインスタンスであるかどうかを判定します。
例えば、リストやタプルなどのイテレータ型のオブジェクトが与えられた場合、そのオブジェクトがイテレータであるかどうかを判定することができます。
import collections
p = [[1,2,3,4], (1,2,3), set([1,2,3]), 'things', 123]
for item in p:
print(isinstance(item, collections.Iterable))
上記のコードは、リストp
の各要素がイテレータであるかどうかを判定し、結果を表示します。collections.Iterable
を使用することで、リスト、タプル、セットなど、Pythonの標準的なイテレータ型を一度に判定することができます。
ただし、Python 3.8以降ではcollections.Iterable
の代わりにcollections.abc.Iterable
を使用することが推奨されています。
また、isinstance
関数の第二引数には、単一のクラスだけでなく、複数のクラスをタプルとして渡すことも可能です。これにより、オブジェクトが複数のクラスのいずれかのインスタンスであるかどうかを判定できます。
以上のように、Pythonのisinstance
関数は非常に強力で、多様な型判定のシナリオで使用することができます。適切に使用することで、コードの可読性と堅牢性を向上させることができます。