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

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