以下是一個組合的例子,在類別圖中,1個訂單一定要有1個訂購客戶。撰寫訂單類別時,在建構元中生成一個客戶物件加入訂單中,所以當訂單物件從記憶體刪除,它的客戶物件也無法再索引。
class Customer():
def __init__(self, name, tel):
self.name = name
self.tel = tel
def info(self):
return f'【{self.name}, {self.tel}】'
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():,}元'
k = Order('王小明', '0911-111111', 10)
print(k.info())
【王小明, 0911-111111】, 購買10個, 共2,000元