面向對象————抽象類
阿新 • • 發佈:2019-02-25
有一個 但是 函數 style 自帶 實現 () turn 模塊
當我們面向對象設計一個代碼的時候,通常我們調用接口的時候,會調用同一個屬性,比如:
class applePay(object): def pay(self,money): print(‘已經用applepay支付了%s‘%money) class alilePay(object): def pay(self,money): print(‘已經用alipay支付了%s‘%money) def pay(obj,money): return obj.pay(money) a = applePay() pay(a,20)
這時候會像我們顯示出 ‘已經用applepay支付了20’ 。但是,現在來了一個新的菜鳥程序員,讓他再實現一個wechatpay的功能,菜鳥一看,這麽簡單,於是在原有代碼的基礎上又加上了一段:
class applePay(object): def pay(self,money): print(‘已經用applepay支付了%s‘%money) class alilePay(object): def pay(self,money): print(‘已經用alipay支付了%s‘%money) def pay(obj,money): return obj.pay(money) class Wechatpay(object): def fuqian(self,money): print(‘已經用Wechat支付了%s‘%money) a = Wechatpay() pay(a,20)
AttributeError: ‘Wechatpay‘ object has no attribute ‘pay‘
這時候,肯定會報錯,他不知道付錢用的統一接口是pay這個函數命名的,怎麽辦呢,這時候通常為了驗證這種情況,有一個abc模塊(python系統自帶的)這時候,將代碼改成如下:
面向對象————抽象類