溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3中如何使用抽象類

發(fā)布時間:2020-11-17 09:22:26 來源:億速云 閱讀:243 作者:小新 欄目:編程語言

這篇文章主要介紹python3中如何使用抽象類,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

從設計角度去看,如果類是從現(xiàn)實對象抽象而來的,那么抽象類就是基于類抽象而來的。

從實現(xiàn)角度來看,抽象類與普通類的不同之處在于:抽象類中有抽象方法,該類不能被實例化,只能被繼承,且子類必須實現(xiàn)抽象方法。這一點與接口有點類似,但其實是不同的

#一切皆文件
import abc #利用abc模塊實現(xiàn)抽象類
 
class All_file(metaclass=abc.ABCMeta):
    all_type='file'
    @abc.abstractmethod #定義抽象方法,無需實現(xiàn)功能
    def read(self):
        '子類必須定義讀功能'
        pass
 
    @abc.abstractmethod #定義抽象方法,無需實現(xiàn)功能
    def write(self):
        '子類必須定義寫功能'
        pass
 
# class Txt(All_file):
#     pass
#
# t1=Txt() #報錯,子類沒有定義抽象方法
 
class Txt(All_file): #子類繼承抽象類,但是必須定義read和write方法
    def read(self):
        print('文本數(shù)據(jù)的讀取方法')
 
    def write(self):
        print('文本數(shù)據(jù)的讀取方法')
 
class Sata(All_file): #子類繼承抽象類,但是必須定義read和write方法
    def read(self):
        print('硬盤數(shù)據(jù)的讀取方法')
 
    def write(self):
        print('硬盤數(shù)據(jù)的讀取方法')
 
class Process(All_file): #子類繼承抽象類,但是必須定義read和write方法
    def read(self):
        print('進程數(shù)據(jù)的讀取方法')
 
    def write(self):
        print('進程數(shù)據(jù)的讀取方法')
 
wenbenwenjian=Txt()
 
yingpanwenjian=Sata()
 
jinchengwenjian=Process()
 
#這樣大家都是被歸一化了,也就是一切皆文件的思想
wenbenwenjian.read()
yingpanwenjian.write()
jinchengwenjian.read()
 
print(wenbenwenjian.all_type)
print(yingpanwenjian.all_type)
print(jinchengwenjian.all_type)

擴展:

不管是抽象類還是接口類:面向?qū)ο蟮拈_發(fā)規(guī)范 所有的接口類和抽象類都不能實例化

java

java里的所有類的繼承都是單繼承,所以抽象類完美的解決了單繼承需求中的規(guī)范問題

但對于多繼承的需求,由于java本身語法的不支持,所以創(chuàng)建了接口Interface這個概念來解決多繼承的規(guī)范問題

python中沒有接口類:

python中自帶多繼承 所以我們直接用class來實現(xiàn)了接口類

python中支持抽象類: 一般情況下單繼承不能實例化且可以實現(xiàn)python代碼

以上是python3中如何使用抽象類的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI