今回は、Pythonの組み込み関数の中で、デバッグの観点から重要な関数の1つであるPython type()関数について見ていきます。
Python type() 関数で始める
Pythonのtype()関数は、プログラム全体のデバッグを行う目的で使用されます。
type()関数は、コード全体の様々なクラスやデータ変数のデータ型をデバッグするために使用することができます。
type() 関数には2つのタイプがあります。
- 1 つの引数を指定する type() 関数
- 3つの引数を持つtype()関数
次のセクションでは、Pythonのtype()関数の両方のバリアントの機能を理解することになります。
1. Python type() の引数が1つの場合
type()関数に引数が1つ渡された場合、与えられたクラス/オブジェクトのデータ型をそれぞれ返します。
構文は以下の通りです。
type ( object )
|
- 引数は 1 つだけです。
- type()関数に引数を1つ渡すと、渡されたオブジェクトのクラス型が返される。
例えば、以下の様になります。
例:
dict_map = { "Python" : 'A' , "Java" : 'B' , "Kotlin" : 'C' , "Ruby" : 'D' }
print ( "The variable dict_map is of type:" , type (dict_map))
list_inp = [ 10 , 20 , 30 , 40 ]
print ( "The variable list_inp is of type:" , type (list_inp))
str_inp = "Python with JournalDev"
print ( "The variable str_inp is of type:" , type (str_inp))
tup_inp = ( 'Bajaj' , 'Tata' , 'Royce' )
print ( "The variable tup_inp is of type:" , type (tup_inp))
|
上記の例では、dict、list などの異なるデータ構造のデータオブジェクトを作成しました。
さらに、オブジェクトの型をデバッグするために、type()関数にそれを渡しました。
出力してください。
The variable dict_map is of type : < class 'dict' >
The variable list_inp is of type : < class 'list' >
The variable str_inp is of type : < class 'str' >
The variable tup_inp is of type : < class 'tuple' >
|
2. Python type() with Three Arguments (3つの引数)
type() 関数に3つの引数が渡されると、関数の出力として新しい型のオブジェクトを生成して返します。
構文は以下の通りです。
type (name, bases, dict )
|
3つのパラメータは次のとおりです。
-
name
: 基本的にはクラスの名前を表す文字列です。 -
bases
: メインクラスのベースとなるクラスを指定するタプルです。 -
dict
: 指定されたクラスのボディを作成するために使用される ‘辞書’ です。
このように、type()関数と上記の3つのパラメータは、実行時にクラスを動的に作成するために使用されます。
例えば、以下の様になります。
var1 = type ( 'ob' , ( object ,), dict (A = 'Python' , B = 'Cpp' ))
print ( type (var1))
print ( vars (var1))
class apply :
A = 'Python'
B = 'Cpp'
var2 = type ( 'oc' , ( apply ,), dict (A = 'Python' , B = 'Kotlin' ))
print ( type (var2))
print ( vars (var2))
|
上記の例では、1つのオブジェクトクラスと、それに ‘apply’ ベースクラスを加えたクラスを動的な実行時に作成しました。
vars()関数は、クラス/モジュールの引数を表します。
出力されます。
< class 'type' >
{ 'A' : 'Python' , 'B' : 'Cpp' , '__module__' : '__main__' , '__dict__' : <attribute '__dict__' of 'ob' objects>, '__weakref__' : <attribute '__weakref__' of 'ob' objects>, '__doc__' : None }
< class 'type' >
{ 'A' : 'Python' , 'B' : 'Kotlin' , '__module__' : '__main__' , '__doc__' : None }
|
概要
- type()関数は、1つのパラメータでパラメータのクラスタイプを返し、コードのデバッグに広く使用されます。
- 3つのパラメータを持つtype()関数は、実行時にクラスを動的に作成するために使用されます。
まとめ
この記事では、Pythonのtype()の動作を、それぞれ異なるパラメータで理解することができました。
参考文献
- Python type()関数 – JournalDev