Python: クラスのインスタンス変数(データ属性)を全て表示する
Pythonでクラスのインスタンス変数(データ属性)を一覧表示させたい場合は、 いくつか方法があります。 ここでは組み込み関数のvars()関数を使う方法と、 __dict__ を使う方法を紹介します。
vars()関数で表示
次のPersonクラスには「name」と「age」の2つの属性が存在します。 vars()関数の引数としてインスタンスを指定するとインスタンス変数を表示できます。
# クラス定義
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def getName(self):
return self.name
# インスタンス作成
p = Person("田中", 30)
# インスタンス変数(データ属性)を表示
print(vars(p))
実行結果
{'name': '田中', 'age': 30}このようにdict型としてインスタンス変数がすべて表示されます。
インスタンス変数の数が多い場合は、 1組ずつ表示させた方が見やすくなるので、 forループを使って次のように記述します。
for t in vars(p).items(): print(t)
実行結果
('name', '田中') ('age', 30)
vars()関数の戻り値がdict型なので、dictオブジェクトの items()メソッドを使うことでタプルとして1組ずつ表示できます。 どちらでもご自身が見やすい方を使ってください。
__dict__ で表示
__dict__ を使っても同じように表示できます。 その場合は「インスタンス.__dict__」と記述します。
# クラス定義
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def getName(self):
return self.name
# インスタンス作成
p = Person("田中", 30)
# インスタンス変数(データ属性)を表示
print(p.__dict__)
実行結果
{'name': '田中', 'age': 30}
vars()関数の場合と同じように dict型として一覧表示されます。 1組ずつ表示する場合は最後の行を次のように変更します。
for t in p.__dict__.items(): print(t)
実行結果
('name', '田中') ('age', 30)