1. 範例一

以下是一個組合的例子,在類別圖中,1個訂單一定要有1個訂購客戶。撰寫訂單類別時,在建構元中生成一個客戶物件加入訂單中,所以當訂單物件從記憶體刪除,它的客戶物件也無法再索引。

(1) 以下是「Customer」類別:

class Customer():
    def __init__(self, name, tel):
        self.name = name
        self.tel = tel

    def info(self):
        return f'【{self.name}, {self.tel}】'

(2) 以下是「Order」類別

class Order():
    def __init__(self, name, tel, quantity):
        self.__customer = Customer(name, tel) #生成一個客戶物件
        self.__quantity = quantity

    @property
    def customer(self): return self.__customer

    @customer.setter
    def customer(self, name, tel): self.__customer = Customer(name, tel)

    @property
    def quantity(self): return self.__quantity

    @quantity.setter
    def quantity(self, quantity): self.__quantity = quantity

    def total(self):
        return 200 * self.quantity

    def info(self):
        return f'{self.customer.info()}, 購買{self.quantity}個, 共{self.total():,}元'

(3) 測試

k = Order('王小明', '0911-111111', 10)
print(k.info())

(4) 執行結果

【王小明, 0911-111111】, 購買10個, 共2,000元