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

変数の型チェック

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

isinstance

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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にタプル、リスト、ディクショナリ、自作クラスの追加を行っています。ループ内で型チェックを行い、型に応じた処理をしている形になります。