python之抽象基類
抽象基類,在這個類中定義一些方法,所有繼承這個類的類必須實現這個方法,並且這個類不能被例項化,
使用抽象基類的情況:
1.某些情況下希望判斷某個物件的型別
2.強制子類必須實現某些方法
在python實現抽象基類在abc和collections.abc中
from abc import abcmeta,abstractmethod
class source(metaclass=abcmeta):
@abstractmethod
def get(self,key):
pass
class mysource(source):
def get(self,key):
pass
class mysource1(source):
pass
# test = source()
# test = mysource()
# test = mysource1()
不過python崇尚鴨子型別,鴨子型別(英語:duck typing)是動態型別的一種風格。在這種風格中,乙個物件有效的語義,不是由繼承自特定的類或實現特定的介面,而是由當前方法和屬性的集合決定。這個概念的名字**於由james whitcomb riley提出的鴨子測試,「鴨子測試」可以這樣表述:
「當看到乙隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這只鳥就可以被稱為鴨子。」
在鴨子型別中,關注的不是物件的型別本身,而是它是如何使用的。例如,在不使用鴨子型別的語言中,我們可以編寫乙個函式,它接受乙個型別為鴨的物件,並呼叫它的走和叫方法。在使用鴨子型別的語言中,這樣的乙個函式可以接受乙個任意型別的物件,並呼叫它的走和叫方法。如果這些需要被呼叫的方法不存在,那麼將引發乙個執行時錯誤。任何擁有這樣的正確的走和叫方法的物件都可被函式接受的這種行為引出了以上表述,這種決定型別的方式因此得名。
鴨子型別通常得益於不測試方法和函式中引數的型別,而是依賴文件、清晰的**和測試來確保正確使用。從靜態型別語言轉向動態型別語言的使用者通常試圖新增一些靜態的(在執行之前的)型別檢查,從而影響了鴨子型別的益處和可伸縮性,並約束了語言的動態特性。
抽象基類在python並非在於用來繼承,主要用來理解python繼承的定義,應該盡量使用鴨子型別,如果一定要繼承介面的話,比較推薦多繼承,抽象基模擬較容易設計過度
python中基類是什麼意思
1 說明 繼承就是讓類和類之間產生父子關係,子類可以擁有父類的靜態屬性和方法。這裡的父類指的是被繼承的類,也叫做基類 子類指的是繼承其它類的類,也叫做派生類 基於至少兩個類之間才有繼承,比如b類繼承a類,那麼a就是b的父類 又叫超類 基類 2 基類的檢視 python 為所有類都提供了乙個 base...
python進去後是什麼樣子 進入Python世界
pycharm的使用以及個性化設定 file settings editor general change font size file settings editor font 修改預設字型大小 file settings editor color scheme python monokai 主題...
python是什麼類 Python中什麼是類與物件
python中什麼是類與物件 閱讀 84 類的概念與定義 在生活中,我們走在路邊,看到一輛車,大腦中首先想到的是 這是一輛車,然後才是這是一輛什麼牌子的車 在這裡,我們就用到了程式設計中的類的概念。同樣的,看到一條小狗,也會先想到這是一條狗,然後會想到這是一條什麼品種的狗。在程式設計中,把同一類的事...