物件導向程式設計中多型指的是一種資料型別有多種形態。
類示例:
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...