抽象類是乙個特殊的類,只能被繼承,不能例項化
其實在未接觸抽象類概念時,我們可以構造香蕉、蘋果、梨之類的類,然後讓它們繼承水果這個基類,水果的基類包含乙個eat函式。
但是你有沒有想過,我們可以將香蕉、蘋果、梨例項化,去吃香蕉、蘋果、梨。但是我們卻不能將水果例項化,因為我們無法吃到叫水果的這個東西。
所以抽象類中只能有抽象方法(沒有實現功能),該類不能被例項化,只能被繼承,且子類必須實現抽象方法。
在不同的模組中通過抽象基類來呼叫,可以用最精簡的方式展示出**之間的邏輯關係,讓模組之間的依賴清晰簡單。
抽象類的程式設計,讓每個人可以關注當前抽象類的方法和描述,而不需要考慮過多的實現細節,這對協同開發有很大意義,也讓**可讀性更高。
import abc #執行結果如下:利用abc模組實現抽象類
class file(metaclass=abc.abcmeta): #
abc.abcmeta是實現抽象類的乙個基礎類
@abc.abstractmethod #
定義抽象方法,無需實現功能
defread(self):
pass
class txt(file): #
子類繼承抽象類,但是必須定義read方法將抽象類中的read方法覆蓋
defread(self):
print('
文字資料的讀取方法')
txt1 =txt()
txt1.read()
txt2 =file()
txt2.read()
顯然將抽象類例項化報錯了,得到了我們想要的結果
為解決相容性問題,我們需要引入six模組
Python程式設計 abc模組實現抽象類
示例 coding utf 8 import abc class animal abc.abc 動物類 抽象類 abc.abstractmethod defeat self 吃飯飯 abc.abstractmethod defsleep self 睡覺覺 class dog animal 狗狗類 實...
3 2 抽象基類(abc模組)
實現乙個抽象基類,不適用abc模組 1 class base 2def get self,key 3raise notimplemented45 defset self,key,value 6raise notimplemented78 9class test base 10def get self...
抽象基類(ABC)
我對抽象基類 abstract base class,abc 的理解在兩個點上。第一點是抽象,即高度抽象 第二點是基類,對抽象基類來說,它的存在只是為了作為基類 區別於具體類 不可以被例項化。高度抽象一詞聽起來本身就很 抽象 不妨讓我用 總結 這個詞進行通俗解釋。比方這裡有兩類人,一類只是聾人,另一...