接口類
阿新 • • 發佈:2018-10-02
規範 clas not span hat 拋出異常 不支持 acl 主動
# 接口類 來源於設計模式,一種思想 # python原生不支持 # 抽象類 來源設計模式,一種思想 # python原生支持的 from abc import abstractmethod, ABCMeta # 規範 接口類,必須指定元類為ABCMeta,必須用@abstractmethod裝飾器 # 規範:接口類或者抽象類都可以 # 接口類:默認多繼承,接口類中的所有的方法都必須沒有實現 # 抽象類:不支持多繼承,抽象類中的方法可以有一些代碼的實現 # Payment就是一個接口類,用來制定一個規範,這裏制定的規範是必須有pay(繼承自Payment這個接口類的類,必須實現pay方法,否則會報錯)class Payment(metaclass=ABCMeta): # 元類,要在python中創建一個類,默認元類是type,這裏使用ABCMeta作為元類去創建Payment,此時表示要寫一個類的規範了 @abstractmethod def pay(self): pass #raise NotImplemented # raise關鍵字,在沒有實現pay方法時會主動拋出異常. NotImplemented沒有實現這個方法異常 class Wechat(Payment): def pay(self, money):print(‘已經使用微信支付了%s元‘ % money) class Alipay(Payment): def pay(self, money): print(‘已經使用支付寶支付了%s元‘ % money) def pay(pay_obj, money): # pay_obj.pay(money) wechat = Wechat() # 由於Wechat繼承了Payment接口類,所以如果Wechat類中沒有實現Payment接口規定的pay,就會報錯 #pay(wechat, 100)
接口類