Python の isinstance(item, list)
について解説
isinstance()
とは?
Python の isinstance()
は、指定したオブジェクトが特定の型(クラス)であるかどうかを判定するための組み込み関数です。
基本構文
isinstance(object, classinfo)
-
object
:判定したいオブジェクト -
classinfo
:確認したい型(クラス)
この関数は、object
が classinfo
のインスタンスであれば True
を、そうでなければ False
を返します。
isinstance(item, list)
の意味
isinstance(item, list)
は、item
が list
型のインスタンスかどうかをチェックするために使われます。
例
item1 = [1, 2, 3]
item2 = "Hello"
item3 = (1, 2, 3)
print(isinstance(item1, list)) # True
print(isinstance(item2, list)) # False
print(isinstance(item3, list)) # False
上記の例では、item1
はリストなので True
になりますが、文字列(str
型)である item2
やタプル(tuple
型)である item3
は False
になります。
isinstance()
を使うメリット
1. 型チェックによるエラー防止
Python は動的型付け言語なので、変数の型を明示的に指定する必要はありません。しかし、型の違いによるエラーを防ぐために isinstance()
を使うことで、安全なコードを書けます。
def add_elements(item):
if isinstance(item, list):
return sum(item)
else:
raise TypeError("引数はリスト型である必要があります。")
print(add_elements([1, 2, 3])) # 6
print(add_elements("Hello")) # TypeError
この関数は、引数がリストである場合のみ処理を続行し、そうでない場合は TypeError
を発生させます。
2. 複数の型を同時にチェック
isinstance()
は、複数の型をタプルとして渡すことで、一度に複数の型のチェックができます。
item = (1, 2, 3)
print(isinstance(item, (list, tuple))) # True
このコードでは、item
が list
または tuple
のどちらかであれば True
になります。
isinstance(item, list)
の注意点
1. サブクラスの影響
Python では list
を継承したクラスも isinstance(item, list)
に True
を返します。
class MyList(list):
pass
my_list = MyList([1, 2, 3])
print(isinstance(my_list, list)) # True
このように、MyList
は list
を継承しているため、isinstance(my_list, list)
は True
になります。
2. type()
との違い
type(item) == list
を使うと、サブクラスは False
になります。
print(type(my_list) == list) # False
したがって、サブクラスも許容する場合は isinstance()
を、厳密に list
のみをチェックする場合は type()
を使うとよいでしょう。
まとめ
項目 | 説明 |
---|---|
isinstance(item, list) |
item が list のインスタンスかを判定する |
型チェックの利点 | エラー防止、複数の型のチェックが可能 |
type(item) == list との違い |
isinstance() はサブクラスも許容するが、type() は厳密な型チェックを行う |
isinstance(item, list)
は、プログラムの安全性を向上させるために便利な関数です。型の違いによるエラーを防ぐために、適切に活用しましょう!