1. 程式人生 > >面向對象————抽象類

面向對象————抽象類

有一個 但是 函數 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系統自帶的)這時候,將代碼改成如下:

面向對象————抽象類