더북(TheBook)

코드 6-8을 보면 person_init() 함수는 인자로 두 특성 값인 이름과 돈을 받습니다. 딕셔너리에 두 변수(데이터)를 삽입하고(#1) 아직 나오지 않은 Person(튜플)의 1번 인덱스 값(함수)부터 차례대로 삽입합니다(#2). give_money, get_money, show는 아직 나오지 않았지만 함수입니다. person_init() 함수는 두 개의 변수(데이터)와 세 개의 함수를 가진 객체 딕셔너리를 반환합니다. 이 객체가 가지는 세 개의 함수를 살펴봅시다.

코드 6-9 oop1/oop1_2/pseudo_class.py ②

def give_money(self, other, money): #3
    self['money'] -= money
    other['get_money'](other, money) #4

def get_money(self, money):
    self['money'] += money

def show(self):
    print('{} : {}'.format(self['name'], self['money']))


코드 6-9의 세 함수는 코드 6-8의 person_init() 함수에서 객체 obj에 삽입하는 함수입니다. 세 함수 중 가장 중요한 함수는 give_money()입니다(#3). 이름에서 알 수 있듯이 이 함수는 한 사람 객체가 다른 사람 객체에게 돈을 주는 함수입니다. 전달받는 인자 중 other는 돈을 받는 사람 객체를 의미합니다. 돈을 주는 사람의 돈은 줄어들 것이고 돈을 받은 사람의 돈은 늘어날 것입니다. 다시 말해, 두 객체 간에 상호작용이 일어나 각자가 가지고 있는 데이터가 변경되는 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.