Pythonで指定したデータの型を確認するisinstanceメソッドで、下記エラーが出た場合の原因と対処法についてまとめています。
エラー内容と発生状況
▼エラーの内容
TypeError: isinstance() arg 2 must be a type or tuple of types
2つ目の引数が型(type)になっていないとのエラーです。
実際の処理では、以下のように正しく型(ここでは配列 list)を設定しているにも関わらず、配列ではないと表示されます。
arr = [1,2,3]
#2つ目の引数で「list」を指定している
if isinstance(arr, list):
print ("YES")
#TypeError: isinstance() arg 2 must be a type or tuple of types
原因
原因はシンプルで、このコードより前に型名と同じlistという変数を使用していたため、list=型ではなく、list=変数になっていたことです。
対処法
この場合の対応方法は2つあります。
基本的には①の「型と同じ名前の変数を使わない」とすべきです。
②引数の指定を type(型名)とした場合
修正が大変になる場合は、typeメソッドで、型名を指定していることを明示することで解決します。
arr = [1,2,3]
if isinstance(arr, type(list)):
print ("YES")
#YES