other 객체의 돈 즉, 변수를 변경할 때 돈을 받는 객체가 가지고 있는 특정 함수(get_money)를 호출하여 변경합니다(#4). 이처럼 서로 다른 객체가 함수 호출을 통해 상호작용하여 객체의 상태(데이터)가 변하는 것을 메시지 패싱(message passing)이라고 합니다. 여기서 주목할 것은 서로 다른 객체가 상호작용할 때 함수를 호출했다는 것과 함수 안에서 상대의 변수(데이터)를 바꾸려면 상대가 가진 특정 함수를 호출해야 한다는 점입니다. 메시지 패싱은 객체 지향에서 매우 중요한 개념이므로 반드시 기억해 두세요.
이제 코드 6-8과 6-9에서 소개한 함수들을 하나로 묶고 있는 Person을 살펴봅시다.
코드 6-10 oop1/oop1_2/pseudo_class.py ③
Person = person_init, give_money, get_money, show
Person은 단지 함수들을 튜플로 묶고 있을 뿐입니다. Person은 클래스로 만들어지지 않았지만, 방식만 다를 뿐 정확하게 클래스처럼 동작합니다.
코드 6-11 oop1/oop1_2/pseudo_class.py ④
if __name__ = = "__main__": # 객체 생성 g = Person[0]('greg', 5000) #5 j = Person[0]('john', 2000) g['show'](g) j['show'](j) print('') # 메시지 패싱 g['give_money'](g, j, 2000) #6 g['show'](g) j['show'](j)
실행결과 greg : 5000
john : 2000
greg : 3000
john : 4000