Python物件導向 多型

2021-08-21 23:57:05 字數 2071 閱讀 2423

什麼是多型?多型就是一種事物有多種形態,比如說動物,有 貓、狗、老鼠、獅子、大象等。

多型的好處:比如我們在新建立類時我們可以繼承動物類,動物類中的方法可以重寫,也可以不重寫,當我們新增時,只是新增乙個animals類而不需要再去修改父類**裡的內容,只需要呼叫就可以了。

多型的最基本的實現就是通過繼承來實現的。

首先我們先建立乙個動物類。動物有名字,會吃,會叫。

class animals(object):

def __init__(self,name):

self.name=name

def eat(self):

print(self.name,'eat')

def say(self):

print(self.name,'say:~~')

這個時候我們就創造了乙個animals類其中有屬性name,還有吃,和叫。

之後用到我們上次講到的繼承。

建立乙個cat類。

from animals import animals

class cat(animals):

def __init__(self,name):

animals.__init__(self,name)

def say(self):

print(self.name,'say:miao~miao~')

這個時候我們繼承animals類,傳入引數name,在__init__(self,name)這個方法之後,我們的cat類就會自動建立繼承來自父類的方法:eat 和say,屬性:name,在多型中我們可以不重寫父類的方法,直接繼承,也可以自己重寫方法,在呼叫的時候會呼叫子類中重寫的方法。

同樣的道理,我們建立乙個dog類。

from animals import animals

class dog(animals):

def __init__(self,name):

animals.__init__(self,name)

def say(self):

print(self.name,'say:wang~wang~')

同樣是重寫say方法。這個時候我們可以在建立乙個.py檔案來測試一下我們建立屬性後呼叫的方法都是什麼。

from cat import cat

from dog import dog

cat=cat("tom")

dog=dog("xiaobai")

cat.say()

dog.say()

cat.eat()

dog.eat()

給cat例項化乙個物件叫做:tom,給dog例項化乙個物件叫做:xiaobai

分別呼叫say和eat方法。結果顯示:

這個時候我們可以看到在父類animals中定義的say為 say:~~ 但是在字類中重寫方法之後再呼叫就會輸出子類中重寫的方法。

這個就體驗出了多型的靈活性,可以再子類中重寫方法,但是對其他並不影響。

如果還是不太明白的話,我們可以再建立乙個獅子類:

from animals import animals

class lion(animals):

def __init__(self,name):

animals.__init__(self,name)

def eat(self):

print(self.name,'self find food to eat')

在獅子類中,我們重寫eat方法讓它自己找食物吃,然後再主函式中進行例項化物件叫:tiger再讓它say和eat的時候,呼叫的say是父類中的say,但是eat就是我們重寫的方法。

這就是多型。

Python物件導向08 多型

物件導向三大特性 封裝根據職責將屬性和方法封裝到乙個抽象的類中 繼承實現 的重用,相同的 不需要重複的編寫 多型不同的子類物件呼叫相同的父類方法,產生不同的執行結果 需求 在dog類中封裝方法game 定義xiaotiandog繼承自dog,並且重寫game方法 定義person類,並且封裝乙個和狗...

Python物件導向(七)多型

當子類和父類都存在相同的run 方法時,我們說,子類的run 覆蓋了父類的run 在 執行的時候,總是會呼叫子類的run 這樣,我們就獲得了繼承的另乙個好處 多型。a list a是list型別 b animal b是animal型別 c dog c是dog型別 判斷乙個變數是否是某個型別可以用is...

Python物件導向 多型特性

目錄 一.多型 多型就是不同子類物件呼叫父類的方法產生不同的結果。二.使用不同的支付工具給商店支付錢 1 思路 首先人去商店買東西,要付錢,先要有人 然後人要選擇支付工具,要有支付方式 我們最近的支付方式有 支付寶支付,蘋果支付.最後人消費的這個行為,人用什麼支付工具,要支付多少錢 2 三.檔案系統...