日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python3中的接口類是什么?怎么用?

本篇文章要說的類很有意思,叫接口類,這個名字相信小伙伴們還是比較容易記住的。小編想通過接口類給大家?guī)碛腥さ牟僮?,畢竟一直學函數(shù)和代碼,確實是一件需要記憶讓人疲憊的事情。希望下面小編帶來的例子,能讓大家在運行代碼的過程中,找到學習接口類的快樂。

創(chuàng)新互聯(lián)建站長期為上千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金水企業(yè)提供專業(yè)的網(wǎng)站設計制作、網(wǎng)站設計,金水網(wǎng)站改版等技術(shù)服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。


我們來看一段代碼去了解為什么需要接口類

class Alipay:
    def pay(self,money):
        print('支付寶支付了')
class Apppay:
    def pay(self,money):
        print('蘋果支付了')
class Weicht:
    def pay(self,money):
        print('微信支付了')
def pay(payment,money):       # 支付函數(shù),總體負責支付,對應支付的對象和要支付的金額
    payment.pay(money)
p=Alipay()
pay(p,200)      #支付寶支付了

這段代碼,實現(xiàn)了一個有趣的功能,就是通過一個總體的支付函數(shù),實現(xiàn)了不同種類的支付方式,不同是支付方式作為對象,傳入函數(shù)中

但是開發(fā)中容易出現(xiàn)一些問題,那就是類中的函數(shù)名不一致,就會導致調(diào)用的時候找不到類中對應方法,例題如下:

class Alipay:
    def paying(self,money):    #這里類的方法可能由于程序員的疏忽,寫的不是一致的pay,導致后面調(diào)用的時候找不到pay
        print('支付寶支付了')
class Apppay:
    def pay(self,money):
        print('蘋果支付了')
class Weicht:
    def pay(self,money):
        print('微信支付了')
def pay(payment,money):       # 支付函數(shù),總體負責支付,對應支付的對象和要支付的金額
    payment.pay(money)
p=Alipay()   #不報錯
pay(p,200)      #調(diào)用執(zhí)行就會報錯,'Alipay' object has no attribute 'pay'

這時候怎么辦呢?可以手動拋異常:NotImplementedError來解決開發(fā)中遇到的問題

class payment:
    def pay(self):
        raise NotImplementedError    #手動拋異常
class Alipay:
    def paying(self, money):  # 這里類的方法不是一致的pay,導致后面調(diào)用的時候找不到pay
        print('支付寶支付了')
def pay(payment, money):  # 支付函數(shù),總體負責支付,對應支付的對象和要支付的金額
    payment.pay(money)
 
p = Alipay()  # 不報錯
pay(p, 200)  #調(diào)用的時候才會報錯  'Alipay' object has no attribute 'pay'

也可以借用abc模塊來處理這種錯誤

from abc import abstractmethod, ABCMeta     #接口類中定義了一些接口名:Pay,且并未實現(xiàn)接口的功能,子類繼承接口類,并且實現(xiàn)接口中的功能
class Payment(metaclass=ABCMeta):    #抽象出的共同功能Pay
    @abstractmethod
    def pay(self,money):pass    #這里面的pay 來源于下面類中的方法pay,意思把這個方法規(guī)范為統(tǒng)一的標準,另外建一個規(guī)范類Payment
class Alipay(Payment):
    def paying(self, money):    #這里出現(xiàn)paying和我們規(guī)范的pay不一樣,那么在實例化 Alipay的時候就會報錯
        print('支付寶支付了')
class Weicht(Payment):
    def pay(self,money):
        print('微信支付了')
def pay(pay_obj,money):
    pay_obj.pay(money)
p=Alipay()   #實例化的時候就會報錯  Can't instantiate abstract class Alipay with abstract methods pay 之前兩個例子都是在執(zhí)行的時候報錯,這里不一樣的是實例化就會知道是哪里發(fā)生錯誤了

總結(jié):用abc模塊裝飾后,在實例化的時候就會報錯,那么當我們代碼很長的時候,就可以早一點預知錯誤,所以以后在接口類類似問題中用這個模塊

接口繼承實質(zhì)上是要求“做出一個良好的抽象,這個抽象規(guī)定了一個兼容接口,使得外部調(diào)用者無需關(guān)心具體細節(jié),

可一視同仁的處理實現(xiàn)了特定接口的所有對象”——這在程序設計上,叫做歸一化。

以上就是python3接口類的一些好玩的例子,是不是覺得學python也是非常開心的事情呢~小編會不定期搜集有趣的例子分享給大家。


網(wǎng)站名稱:創(chuàng)新互聯(lián)Python教程:python3中的接口類是什么?怎么用?
地址分享:http://m.5511xx.com/article/djojjee.html