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つずつ表示させた方が見やすくなりますので、 「print(vars(p))」の部分を次のように変更します。

for t in vars(p).items():
	print(t)
実行結果
('name', '田中')
('age', 30)

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)
Python