python之物件導向程式設計 四 多型與抽象

2021-10-10 07:08:23 字數 2951 閱讀 5607

物件導向程式設計中多型指的是一種資料型別有多種形態。

類示例

class

animal

: kind =

'動物'

def__init__

(self, name)

: self.name = name

defeat(self)

:print

(f'正在進食!'

)class

cat(animal)

:def

__init__

(self, name, count=0)

: self.count = count

animal.__init__(self, name)

defwork

(self)

:print

(f'貓咪「」捉住了只老鼠'

)class

dog(animal)

:def

__init__

(self, name, count=0)

: self.count = count

animal.__init__(self, name)

defwork

(self)

:print

(f'獵狗「」捉住了只兔子'

)

上述案例種animal類這種資料有2種形態,一是貓、二是狗。

多型的好處是可以統一介面,提高多人配合做大型專案時的工作效率。

統一介面示例

def

work

(x, num)

: x.count += num

x.work(

)white_cat = cat(

'大白貓'

)balck_dog = dog(

'老黑狗'

)work(white_cat,2)

work(balck_dog,3)

out:

貓咪「大白貓」捉住了2只老鼠

獵狗「老黑狗」捉住了3只兔子

講解

在多人配合的專案中:甲是專案規劃師,他定義了animal類;乙定義了cat類、丙定義了dog類,這時丁在**中例項化cat和dog,要寫有關cat和dog工作的**,如果沒有統一介面work函式,那麼寫起來會很麻煩,得針對不同的例項判斷其型別再分別做處理。此時就可以運用多型的概念,甲寫出統一介面,這樣乙、丙、丁在寫cat、dog例項工作時可以使用統一介面work函式。這樣可以提高團隊協作默契度,減少重複**,提高**可讀性。

物件導向程式設計中抽象指的是一種特殊的類,抽象類不是用來實現功能的,而是用來規範子類方法名的。

類示例

class

workanimal

:def

work

(self)

:raise notimplementederror(

'要工作的動物必須統一實現work方法!'

)

講解:

可以看到workanimal本身沒有實現功能,只是用來提示所有寫子類的程式設計師要統一子類的方法名。繼續以上的案例,假設程式設計師丙寫dog類的時候沒有遵循抽象類統一命名規範,他的**如下:

class

dog(animal, workanimal)

:def

__init__

(self, name, count=0)

: self.count = count

animal.__init__(self, name)

defcatch

(self)

:print

(f'獵狗「」捉住了只兔子'

)

此時程式設計師丙和丁呼叫統一介面work函式就會報錯。

完整**如下:

class

animal

: kind =

'動物'

def__init__

(self, name)

: self.name = name

defeat(self)

:print

(f'正在進食!'

)class

workanimal

:def

work

(self)

:raise notimplementederror(

'要工作的動物必須統一實現work方法!'

)def

work

(x, num)

: x.count += num

x.work(

)class

dog(animal, workanimal)

:def

__init__

(self, name, count=0)

: self.count = count

animal.__init__(self, name)

defcatch

(self)

:print

(f'獵狗「」捉住了只兔子'

)balck_dog = dog(

'老黑狗'

)work(balck_dog,3)

out:

notimplementederror: 要工作的動物必須統一實現work方法!

多型和抽象在物件導向程式設計中是非常重要的兩個概念,在編寫多人協作的專案時必不可少!雖然多型和抽象本身並不能幫助程式設計師實現功能,但它們可以幫助多人協作編寫**更加規範,減少團隊合作時因命名不統一造成的bug。

python之物件導向程式設計

物件導向的程式設計的核心是物件 上帝式思維 要理解物件為何物,必須把自己當成上帝,上帝眼裡世間存在的萬物皆為物件,不存在的也可以創造出來。物件是特徵和技能的結合,其中特徵和技能分別對應物件的資料屬性和方法屬性。優點是 解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中,如對遊戲中乙...

Python之物件導向程式設計

類和物件 類是抽象的模板,比如我們抽象乙個學生類,很容易想到學生固有的一些屬性,比如名字,年齡等等,建立乙個學生類 class student object pass 複製 這裡的object是表明student類是從哪個類繼承來的,在python中object是所有類的父類 繼承的概念下文會提及 ...

python之物件導向程式設計

當使用 類名 實參 建立例項物件時,python直譯器的主要處理過程包括兩大步 首先會查詢該類物件是否實現了特殊方法 new 如果沒有實現,則去其父類中依次查詢,直到類物件object。class parent object def new cls,args,kwargs pass class ch...