了解python3中如何使用接口類?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
我們一直強調(diào)網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站設(shè)計公司不一定是大公司,創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。我們來看一段代碼去了解為什么需要接口類
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ù),總體負責(zé)支付,對應(yīng)支付的對象和要支付的金額 payment.pay(money) p=Alipay() pay(p,200) #支付寶支付了
這段代碼,實現(xiàn)了一個有趣的功能,就是通過一個總體的支付函數(shù),實現(xiàn)了不同種類的支付方式,不同是支付方式作為對象,傳入函數(shù)中
但是開發(fā)中容易出現(xiàn)一些問題,那就是類中的函數(shù)名不一致,就會導(dǎo)致調(diào)用的時候找不到類中對應(yīng)方法,例題如下:
class Alipay: def paying(self,money): #這里類的方法可能由于程序員的疏忽,寫的不是一致的pay,導(dǎo)致后面調(diào)用的時候找不到pay print('支付寶支付了') class Apppay: def pay(self,money): print('蘋果支付了') class Weicht: def pay(self,money): print('微信支付了') def pay(payment,money): # 支付函數(shù),總體負責(zé)支付,對應(yīng)支付的對象和要支付的金額 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,導(dǎo)致后面調(diào)用的時候找不到pay print('支付寶支付了') def pay(payment, money): # 支付函數(shù),總體負責(zé)支付,對應(yīng)支付的對象和要支付的金額 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模塊裝飾后,在實例化的時候就會報錯,那么當我們代碼很長的時候,就可以早一點預(yù)知錯誤,所以以后在接口類類似問題中用這個模塊
接口繼承實質(zhì)上是要求“做出一個良好的抽象,這個抽象規(guī)定了一個兼容接口,使得外部調(diào)用者無需關(guān)心具體細節(jié),
可一視同仁的處理實現(xiàn)了特定接口的所有對象”——這在程序設(shè)計上,叫做歸一化。
感謝各位的閱讀!看完上述內(nèi)容,你們對python3中如何使用接口類大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標題名稱:python3中如何使用接口類-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://m.rwnh.cn/article40/iisho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、靜態(tài)網(wǎng)站、建站公司、網(wǎng)站設(shè)計公司、網(wǎng)站改版、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容