変数の型チェック (isinstance) | Python-izm

変数の型チェック

Pythonでは変数の型を宣言する必要がありません。ただし型によって処理を分岐したい場合など、変数チェック判別する機会があります。

isinstance

isinstanceを使用して判別を行います。

class TestClass:

    def __init__(self, title):
        self.title = title


tuple_instance = ('tuple', 'instance')
list_instance  = ['list', 'instance']
dict_instance  = {'1':'dict', '2':'instance'}
class_instance = TestClass('class')

python_list = []
python_list.append('python')
python_list.append('izm')
python_list.append(tuple_instance)
python_list.append(list_instance)
python_list.append(dict_instance)
python_list.append(class_instance)

for parent in python_list:
    if isinstance(parent, tuple):
        print('++++ tuple ++++')
        for child in parent:
            print(child)

    elif isinstance(parent, list):
        print('++++ list ++++')
        for child in parent:
            print(child)

    elif isinstance(parent, dict):
        print('++++ dict ++++')
        for child in parent.keys():
            print(parent[child])
    
    elif isinstance(parent, TestClass):
        print('++++ TestClass ++++')
        print(parent.title)

    else:
        print('-- string --')
        print(parent)

リストpython_listにタプル、リスト、ディクショナリ、自作クラスの追加を行っています。ループ内で型チェックを行い、型に応じた処理をしている形になります。