이전에 작성한 글에서는 __str__() 에서 class member 를 하나하나 출력하도록 작업했었다.

만약에, class member 가 엄청 많거나, 상속된 클래스일 경우 하나하나 대응하기 어렵다.

이럴 때는 pprint.pformat() 와 vars() 를 사용하여 다음과 같이 할 수도 있다.

import pprint

class my_type():
	def __init__(self, id):
		self.type_id = id
		self.type_id2 = 2
		self.type_id3 = 3
		self.type_name = 'empty'

	def __str__(self):
		return pprint.pformat(vars(self))
	
	def __repr__(self):
		return self.__str__() + '\n'


if __name__ == "__main__":
	t = my_type(0)
	print t

	dic = {}
	dic[1] = my_type(1)
	dic[2] = my_type(2)
	print dic
	
	l = []
	l.append(my_type(3))
	l.append(my_type(4))
	print l

위의 실행 결과는 다음과 같다.

{'type_id': 0, 'type_id2': 2, 'type_id3': 3, 'type_name': 'empty'}
{1: {'type_id': 1, 'type_id2': 2, 'type_id3': 3, 'type_name': 'empty'}
, 2: {'type_id': 2, 'type_id2': 2, 'type_id3': 3, 'type_name': 'empty'}
}
[{'type_id': 3, 'type_id2': 2, 'type_id3': 3, 'type_name': 'empty'}
, {'type_id': 4, 'type_id2': 2, 'type_id3': 3, 'type_name': 'empty'}
]


참고


Posted by 집시F