抽象類是一個特殊的類,只能被繼承,不能實例化編程
其實在未接觸抽象類概念時,咱們能夠構造香蕉、蘋果、梨之類的類,而後讓它們繼承水果這個基類,水果的基類包含一個eat函數。函數
可是你有沒有想過,咱們能夠將香蕉、蘋果、梨實例化,去吃香蕉、蘋果、梨。可是咱們卻不能將水果實例化,由於咱們沒法吃到叫水果的這個東西。spa
因此抽象類中只能有抽象方法(沒有實現功能),該類不能被實例化,只能被繼承,且子類必須實現抽象方法。code
在不一樣的模塊中經過抽象基類來調用,能夠用最精簡的方式展現出代碼之間的邏輯關係,讓模塊之間的依賴清晰簡單。blog
抽象類的編程,讓每一個人能夠關注當前抽象類的方法和描述,而不須要考慮過多的實現細節,這對協同開發有很大意義,也讓代碼可讀性更高。繼承
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()
運行結果以下:開發
顯然將抽象類實例化報錯了,獲得了咱們想要的結果class
爲解決兼容性問題,咱們須要引入six模塊import