1、抽象類概念
抽象類是一個特殊的類,只能被繼承,不能實例化
2、為什么要有抽象類
其實在未接觸抽象類概念時,我們可以構造香蕉、蘋果、梨之類的類,然后讓它們繼承水果這個基類,水果的基類包含一個eat函數。
但是你有沒有想過,我們可以將香蕉、蘋果、梨實例化,去吃香蕉、蘋果、梨。但是我們卻不能將水果實例化,因為我們無法吃到叫水果的這個東西。
所以抽象類中只能有抽象方法(沒有實現功能),該類不能被實例化,只能被繼承,且子類必須實現抽象方法。
3、抽象類的作用
在不同的模塊中通過抽象基類來調用,可以用最精簡的方式展示出代碼之間的邏輯關系,讓模塊之間的依賴清晰簡單。
抽象類的編程,讓每個人可以關注當前抽象類的方法和描述,而不需要考慮過多的實現細節,這對協同開發有很大意義,也讓代碼可讀性更高。
4、抽象類的使用
import abc # 利用abc模塊實現抽象類
class File(metaclass=abc.ABCMeta): # abc.ABCMeta是實現抽象類的一個基礎類
@abc.abstractmethod # 定義抽象方法,無需實現功能
def read(self):
pass
class Txt(File): # 子類繼承抽象類,但是必須定義read方法將抽象類中的read方法覆蓋
def read(self):
print('文本數據的讀取方法')
txt1 = Txt()
txt1.read()
txt2 = File()
txt2.read()
運行結果如下:
顯然將抽象類實例化報錯了,得到了我們想要的結果.
5、abc模塊在Python2&3的兼容問題
為解決兼容性問題,我們需要引入six模塊