Pythonにもその他の言語(C言語やJava)と同様に変数に型があります。
通常は変数の型を宣言時には明記しませんが、明記して宣言することも可能です。
今回はそのPythonでその変数がどんな型で利用されているのかを「isinstance関数」を使ってチェックする方法です。
Pythonの変数の型をisinstance関数でチェックする
Pythonの変数の型をチェックするには「isinstance関数」を利用して行います。
isinstance関数の使い方
isinstance(チェックする変数, Pythonの型名)
isinstance(チェックする変数, Pythonの型名)
実際のソースは以下のような形になります。
#変数の型チェック def checkType( obj ): if isinstance( obj, bool ) : print( '【' + str(obj) + '】はbool型です' ) elif isinstance(obj, int): print( '【' + str(obj) + '】はint型です') elif isinstance(obj, map): print( '【' + str(obj) + '】はmap型です') elif isinstance(obj, float): print( '【' + str(obj) + '】はfloat型です') elif isinstance(obj, complex): print( '【' + str(obj) + '】はcomplex型です') elif isinstance(obj, list): print( '【' + str(obj) + '】はlist型です') elif isinstance(obj, tuple): print( '【' + str(obj) + '】はtuple型です') elif isinstance(obj, range): print( '【' + str(obj) + '】はrange型です') elif isinstance(obj, str): print( '【' + str(obj) + '】はstr型です') elif isinstance(obj, bytes): print( '【' + str(obj) + '】はbytes型です') elif isinstance(obj, set): print( '【' + str(obj) + '】はset型です') elif isinstance(obj, frozenset): print( '【' + str(obj) + '】はfrozenset型です') elif isinstance(obj, dict): print( '【' + str(obj) + '】はdict型です') # elif isinstance(obj, object): # print( '【' + str(obj) + '】はobject型です') #これを有効にするとすべてobejct型になる else : print( '【' + str(obj) + '】は型が不明です。') #クラスのテスト用 class Parent(object): def __init__( self ): pass class Child( Parent ): def __init__( self ): pass #変数の型チェックを実行する checkType( True ) #bool型 checkType( 1 ) #int型 checkType( 1.123 ) #float型 checkType( [1, 2, 3] ) #list型 checkType( {100, 200} ) #set型 checkType( {'key': 100} ) #dict型 checkType( ('key','100') ) #tuple型 checkType( 'string' ) #str型 checkType( b'foo' ) #bytes型 checkType( complex(3, 4) ) #complex型 checkType( range( 1, 10, 3 )) #range型 checkType( map( lambda x: x**2, list( range( 10 )))) #map型 checkType( frozenset([2, 4, 6 ])) #frozenset型 checkType( Parent() ) #基底クラス checkType( Child() ) #サブクラス checkType( None ) #None
上記をPythonで実行すると
【True】はbool型です 【1】はint型です 【1.123】はfloat型です 【[1, 2, 3]】はlist型です 【{200, 100}】はset型です 【{'key': 100}】はdict型です 【('key', '100')】はtuple型です 【string】はstr型です 【b'foo'】はbytes型です 【(3+4j)】はcomplex型です 【range(1, 10, 3)】はrange型です 【<map object at 0x0000017E3FC73CC8>】はmap型です 【frozenset({2, 4, 6})】はfrozenset型です 【<__main__.Parent object at 0x0000017E3FC73CC8>】は型が不明です。 【<__main__.Child object at 0x0000017E3FC73CC8>】は型が不明です。 【None】は型が不明です。
になります。
クラスとNoneは型が規定のものではないので「不明」にしてあります。
まとめ
Pythonの変数の型をチェックするには「isinstance関数」を利用することでクラスなどの独自定義のもを除けば判断が付きます。
Pythonの変数の型
Pythonでは他のプログラミング言語(C言語やJava)などと異なり変数の宣言に「型」は指定しませんが、型がないわけではありません。この記事ではその変数の型について宣言方法を含めてみていきます。
以上、Pythonで変数の型をisinstance関数でチェックする方法でした。