Pythonでインスタンスの状態をダンプするにはvars()を使う


このエントリーをはてなブックマークに追加

以下のような、インスタンス変数としてval1とval2を持つMyClassというクラスを考えます。

class MyClass:
    def __init__(self, val1, val2):
        self.val1 = val1
        self.val2 = val2

以下のように、このクラスのインスタンスを作り、printしてみます。

mc = MyClass(10, 20)
print(mc)

すると以下のような文字列が表示されるだけで、インスタンスのもつインスタンス変数は表示できません。

<__main__.MyClass object at 0x00000000043E4A90>

インスタンス変数を全部表示するには、vars()を使うとよいようです。

print(vars(mc))

とすると、

{'val1': 10, 'val2': 20}

と、インスタンス変数が表示できました。

ただし、Classが入れ子である構造の場合は、1段目しか表示できません。この場合については研究中。

参考