新聞中心
這里有您想知道的互聯網營銷解決方案
創(chuàng)新互聯Python教程:python3中的抽象類是什么?怎么用?
之前講過接口類后,我們來講講它的好兄弟抽象類。聽到名字之后,小伙伴就有點害怕它的難度了。小編原來也是這么以為的,學習了完整的資料后,才發(fā)現自己是想錯了。有了小編為大家探路,大家可以放心的來學習python3中的抽象類啦。其他的我們就不講,保留一點神秘,具體內容大家一起學習下。

從設計角度去看,如果類是從現實對象抽象而來的,那么抽象類就是基于類抽象而來的。
從實現角度來看,抽象類與普通類的不同之處在于:抽象類中有抽象方法,該類不能被實例化,只能被繼承,且子類必須實現抽象方法。這一點與接口有點類似,但其實是不同的
#一切皆文件
import abc #利用abc模塊實現抽象類
class All_file(metaclass=abc.ABCMeta):
all_type='file'
@abc.abstractmethod #定義抽象方法,無需實現功能
def read(self):
'子類必須定義讀功能'
pass
@abc.abstractmethod #定義抽象方法,無需實現功能
def write(self):
'子類必須定義寫功能'
pass
# class Txt(All_file):
# pass
#
# t1=Txt() #報錯,子類沒有定義抽象方法
class Txt(All_file): #子類繼承抽象類,但是必須定義read和write方法
def read(self):
print('文本數據的讀取方法')
def write(self):
print('文本數據的讀取方法')
class Sata(All_file): #子類繼承抽象類,但是必須定義read和write方法
def read(self):
print('硬盤數據的讀取方法')
def write(self):
print('硬盤數據的讀取方法')
class Process(All_file): #子類繼承抽象類,但是必須定義read和write方法
def read(self):
print('進程數據的讀取方法')
def write(self):
print('進程數據的讀取方法')
wenbenwenjian=Txt()
yingpanwenjian=Sata()
jinchengwenjian=Process()
#這樣大家都是被歸一化了,也就是一切皆文件的思想
wenbenwenjian.read()
yingpanwenjian.write()
jinchengwenjian.read()
print(wenbenwenjian.all_type)
print(yingpanwenjian.all_type)
print(jinchengwenjian.all_type)擴展:
不管是抽象類還是接口類:面向對象的開發(fā)規(guī)范 所有的接口類和抽象類都不能實例化
java :
java里的所有類的繼承都是單繼承,所以抽象類完美的解決了單繼承需求中的規(guī)范問題
但對于多繼承的需求,由于java本身語法的不支持,所以創(chuàng)建了接口Interface這個概念來解決多繼承的規(guī)范問題
python中沒有接口類:
python中自帶多繼承 所以我們直接用class來實現了接口類
python中支持抽象類: 一般情況下單繼承不能實例化且可以實現python代碼
關于拓展里的類知識,小伙伴們還是要著重注意一下,畢竟小編發(fā)現這是出錯比較多的點。
分享文章:創(chuàng)新互聯Python教程:python3中的抽象類是什么?怎么用?
文章源于:http://m.5511xx.com/article/cdcppih.html


咨詢
建站咨詢
