Python抽象類(abc模組)

2022-05-03 19:48:13 字數 920 閱讀 5585

抽象類是乙個特殊的類,只能被繼承,不能例項化

其實在未接觸抽象類概念時,我們可以構造香蕉、蘋果、梨之類的類,然後讓它們繼承水果這個基類,水果的基類包含乙個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 的理解在兩個點上。第一點是抽象,即高度抽象 第二點是基類,對抽象基類來說,它的存在只是為了作為基類 區別於具體類 不可以被例項化。高度抽象一詞聽起來本身就很 抽象 不妨讓我用 總結 這個詞進行通俗解釋。比方這裡有兩類人,一類只是聾人,另一...