非正式介面
非正式介面會提供一組方法,所有實作該介面的類別都必須定義這些方法。下面的 Supplier 類別將作為一個非正式介面。為了讓 YogurtSupplier 符合 Supplier 介面所訂下的合約,它必須定義 take_order() 與 make_delivery() 這兩個方法。在這個練習中,你會動手完成這件事。
class Supplier:
def take_order(self, product_name, quantity):
pass
def make_delivery(self, order_id, location):
pass
本練習屬於課程
Python 物件導向程式設計進階
練習說明
- 在
YogurtSupplier類別中,定義take_order()方法,把一筆訂單加入self.orders字典。 - 依照
Supplier介面訂下的合約,定義make_delivery()方法:印出一則訊息,並從self.orders中以order_id刪除該筆訂單。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
class YogurtSupplier:
def __init__(self):
self.orders = {}
# Finish defining the take_order() method
____:
self.____[f"{product_name}_{quantity}"] = {
"product_name": ____, "quantity": ____
}
# Implement a make_delivery() abstract method
____:
print(f"Delivering order: {order_id} to {location}")
del ____.____[____]