python3 抽象基類

2021-10-13 07:18:59 字數 1121 閱讀 3811

1,抽象基類(abstract base class或者 abcs)用於

定義一組必須被類的「鴨子型別」例項實現的方法與屬性,可以繼承抽象基類本身的類作為類的例項,但是必須提供所有適合的方法。

from collections.abc import container

class testcontainer:

def __contains__(self,x):

return true

mycontainer =testcontainer()

print(isinstance(mycontainer,container)) #true

print(issubclass(testcontainer,container)) #true

這種就是鴨子型別比傳統多型更棒的原因,可以不使用繼承關係就你能建立 「是乙個」的關係。

2, 建立抽像基類

import abc

class testabc(metaclass=abc.abcmeta):

@abc.abstractmethod

def play(self):

pass

@abc.abstractproperty

def name(self):

pass

# ta=testabc()

# print(ta)

class myabc(testabc):

name="kule"

def play(self):

print("play...")

# mt=myabc()

print(isinstance(myabc(),testabc)) #true

print(issubclass(myabc,testabc)) #true

myabc 是testabc的子類,但是沒有真正繼承testabc。

常見的物件導向語言通常在類的介面和介面的實現上有明確的區分,例如inte***ce關鍵字,用於定義類必須包含的方法,但是不需要實現,這樣就抽象出來了乙個介面。

任何類都可以明確宣告它實現自某個介面。

python的abcs幫助提供介面的功能,同時也保留了鴨子型別的特點。

python抽象基類理解

抽象基類它提供了介面,但是又沒有去把介面實現的類,需要由子類完成。感覺它就是老闆,只告訴你要完成專案a,你接到專案a後 繼承 你自己去把它完成。抽象基類特點 1.繼承類必須實現抽象基類的方法 2.抽象基類無法例項化 1.why 抽象基類?譬如要開發乙個專案,你要規定專案開發者要去完成某些介面,有些介...

python 中抽象基類簡介

簡介 python中雖然鴨子型別很強大,但鴨子型別也有著不足。具體關於分類可以參照水禽的分類理解。因此,參照水禽的分類學演化,我建議在鴨子型別的基礎上增加白鵝型別 goose typing 白鵝型別指,只要cls是抽象基類,即cls的元類是abc.abcmeta,就可以使用isinstance ob...

python3的常用語法 Python3基本語法

編碼 預設情況下,python3原始檔以utf 8編碼,所有字串都是unicode字串,也可以為原始檔指定編碼。coding cp 1252 識別符號第乙個字元必須是字母表中字母或下劃線 識別符號的其他的部分有字母 數字和下劃線組成。識別符號對大小寫敏感。python保留字 保留字即關鍵字,我們不能...