class 일부 attribute member 의 경우에는 나중에 또는 특정 이벤트가 발생되어야 초기화 될 수도 있다.

이럴 경우, attribute member 가 존재하지 않을 수도 있는데 값을 출력하고자 하면 python error 가 발생한다.

AttributeError: my_collection instance has no attribute 'toys'

이 에러가 발생하더라도 무시하도록 하고자 한다면, try ~ except AttributeError 를 사용한다.

다음의 예제는 이를 이용하여, 에러없이 attribute member 를 출력해주고 있다.

class my_collection():
	def __init__(self):
		self.init_books()
	
	def init_books(self):
		self.books = [ 'Bible', 'Programming Gems #20' ]
	
	def init_toys(self):
		self.toys = [ 'Lego', 'Raspberry Pi' ]
	
	def print_object(self, dest):
		try:
			if dest == 'books':
				print 'BOOKS', self.books
			elif dest == 'toys':
				print 'TOYS', self.toys
		except AttributeError:
			print 'NOT EXISTS'


if __name__ == "__main__":
	c = my_collection()
	c.print_object('books')
	c.print_object('toys')
	
	c.init_toys()
	print 'init toys...'
	
	c.print_object('toys')

실행 결과는 다음과 같다.

BOOKS ['Bible', 'Programming Gems #20']
TOYS NOT EXISTS
init toys...
TOYS ['Lego', 'Raspberry Pi']


참고


Posted by 집시F