Pythonのtype関数を使ってオブジェクトの型を調べる方法

スポンサーリンク

今回は、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
タイトルとURLをコピーしました