概要
Pythonでオブジェクトを操作していると、そのオブジェクトが持つすべての属性やメソッドを確認したい場合があります。Pythonには、このような場合に役立つ2つの標準関数、dir()とvars()が用意されています。これらを使うことで、オブジェクトの属性を効率的に確認し、デバッグやコードの理解を深めることが可能です。
dir()関数について
基本的な使い方
dir()関数は、オブジェクトが持つすべての属性やメソッドをリスト形式で返します。これには、ユーザーが定義した属性だけでなく、Pythonが内部で使用する特殊メソッド(__init__など)も含まれます。
使用例
class SampleClass:
def __init__(self):
self.name = "`Python`"
self.version = 3.9
obj = SampleClass()
print(dir(obj))
上記のコードでは、objオブジェクトのすべての属性とメソッドがリストとして表示されます。このリストには、nameやversionといったユーザー定義の属性の他、__init__や__str__などの特殊メソッドも含まれています。
vars()関数について
基本的な使い方
vars()関数は、オブジェクトの属性とその値を格納した辞書を返します。この関数を使うと、オブジェクトの属性だけでなく、それぞれの属性に対応する値も確認できます。主にオブジェクトが持つ__dict__属性を取得するために使用されます。
使用例
class SampleClass:
def __init__(self):
self.name = "`Python`"
self.version = 3.9
obj = SampleClass()
print(vars(obj))
このコードを実行すると、{'name': 'Python', 'version': 3.9}という出力が得られます。vars()は、属性名とその値を対応させた辞書を返すため、属性にアクセスして値を確認するのに非常に便利です。
dir()とvars()の違い
dir()は、オブジェクトが持つすべての属性やメソッドの名前をリスト形式で返すのに対して、vars()は、そのオブジェクトの属性名と値を対応させた辞書を返します。つまり、dir()は属性やメソッドの一覧を確認したいときに使い、vars()は具体的な属性の値を確認したいときに使用します。
| 関数 | 戻り値 | 主な用途 |
|---|---|---|
dir() | 属性・メソッドのリスト | オブジェクトの構造の確認 |
vars() | 属性と値の辞書 | 属性とその値の確認 |
まとめ
Pythonでオブジェクトのすべての属性やメソッドを確認するには、dir()とvars()の2つの関数が有効です。dir()は属性名を一覧として返し、vars()は属性とその値を確認するための辞書を返します。状況に応じてこれらを使い分けることで、より効率的なデバッグやオブジェクト操作が可能になります。