더북(TheBook)
class Member:
    def __init__(self, n, d):
        self.name, self.join_date = n, d
        self.purchase_list = []
        self.purchase_amount = 0

    def information(self):
        print('회원이름 :', self.name)
        print('가입날짜 :', self.join_date)
        print('구매내역 :', self.purchase_list)
        print('누적 구매금액 :', self.purchase_amount)

속성에 값을 저장하고, 이를 출력하는 것이 전부이기 때문에 어려운 부분은 없습니다.

다음으로 Member 클래스에 있어야 하는 기능을 생각해 봅시다. 쇼핑몰에서 회원이 가장 많이 하는 일은 구매죠. 따라서 상품을 구매하는 메서드가 있어야 합니다. 메서드명은 buy로 하겠습니다. 상품 구매 시 일어나는 일을 생각해 봅시다. 회원이 상품을 결제하면 회원의 구매내역(purchase_list)에 상품이름이 추가되고, 누적 구매금액(purchase_amount)에 결제금액만큼 더해져야 합니다. 회원이 가진 속성을 제대로 변경했다면 팔린 상품의 재고수량을 팔린 개수만큼 차감해야 합니다.

구매내역에 구매한 상품을 추가하려면 상품이름을 알아야죠. 누적 구매금액을 변경하려면 상품가격과 구매수량을 알아야 하고요. 상품이름과 가격은 Member 클래스에서는 알 수가 없고, 어떤 상품을 사느냐에 따라 달라집니다. 따라서 상품이름과 가격은 인자로 전달받아야 합니다. Product 객체를 인자로 전달받으면 그 객체의 속성(상품이름, 가격)에 접근할 수 있겠죠. 구매수량도 그때그때 다르므로 클래스 외부에서 전달받도록 매개변수 count를 사용하겠습니다.

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