1. 程式人生 > >接口類

接口類

規範 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)

接口類