開始使用免費開始

非正式介面

非正式介面會提供一組方法,所有實作該介面的類別都必須定義這些方法。下面的 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 ____.____[____]
編輯並執行程式碼