変数の型チェック (isinstance)
Pythonでは変数の型を宣言する必要がありません。 その仕様がゆえにというわけではありませんが、変数の型をチェック・判別する関数があります。
「isinstance」を使用して判別を行います。
# -*- coding: utf-8 -*-
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」にタプル、リスト、ディクショナリ、クラスの追加を行っています。 ループ内で型チェックを行い、型に応じた処理をしている形になります。
属性も持っているか、持っていないか!
▶応用編:属性の有無チェック (hasattr)
