python程式設計 多型

2021-10-09 04:43:36 字數 2454 閱讀 1232

物件導向的程式設計具有三大特性:封裝性,繼承性,多型性

生活中的多型性:

幼兒園門口家長們要接孩子放學了,廣播響起:

請各位家長照顧好自己的小孩,希望你們度過乙個美好的週末!

此刻,家長a就會接上a的孩子,家長b就會接上b的孩子,雖然對於每個人都是『自己的孩子』,但這個『自己』表示的卻是不同的人。

延伸到程式設計中就是:雖然都是同乙個變數(「自己」)呼叫同乙個的方法(「接自己的孩子」),但該方法屬於哪個類的物件(如「a」的物件),完全是由程式在執行時(放學接孩子)確定的。這就是類程式設計中的多型性。

class

animal

:def

__init__

(self, name)

: self.name = name

@staticmethod

# 封裝

defanimal_talk

(obj, string)

: obj.talk(obj.name, string)

# 注意這裡用了兩種不同方式輸出

class

cat(animal)

:def

talk

(self, name, words)

:print

(name +

' is saying %s'

% words)

class

dog(animal)

:def

talk

(self, name, words)

:print

('%s is saying %s'

%(name, words)

)#注意方法的呼叫:

#乙個是animal.animal_talk; 乙個是d.animal_talk

c = cat(

"catname"

)animal.animal_talk(c,

"i'm a cat"

)d = dog(

"dogname"

)# create a dog d named dogname; d is an animal

d.animal_talk(

"i'm a dog")-

----

----

----

----

----

----

----

----

----

----

----

-catname is saying i'm a cat

dogname is saying i'm a dog

上圖**定義了cat類 和dog類,兩者都繼承於animal 類,且都重寫了基類的talk() 方法,變數cd在執行talk()方法時,由於cd指向的例項物件不同,**會自動根據cd的具體物件來決定執行哪個talk方法,這就是多型性!

class

animal

:def

initial

(self, animaltype)

: animaltype.growplace(

)class

fish

:def

growplace

(self)

:print

("in water"

)# a = animal() # creating an animal a

# f = fish() # creating a fish 'f'

# a.initial(f)

animal(

).initial(fish(

))

class

animal

:def

initial

(self, animaltype)

: animaltype.growplace(self)

class

fish

:def

__init__

(self, s)

: self.growing_place = s

defgrowplace

(self, growing_place)

:print

("it is growing in "

+ self.growing_place)

a = animal(

)#creating an animal a

f = fish(

'water'

)#creating a fish 'f' which is living in 'water'

a.initial(f)

發生多型必須滿足以下兩個前提條件

繼承:多型一定是發生在父類和子類間

重寫:多型子類重寫了父類的方法

Python 物件導向程式設計 多型

多型 傳入不同的物件,產生不同的效果 多型是一種使用物件的方式,子類重寫父類方法,呼叫不同子類物件的相同父類方法,可以產生不同的執行結果 好處 呼叫靈活,更容易編寫出通用的 做出通用的程式設計,以適應需求的不斷變化。實現步驟 1.定義父類,並提供公共方法 2.定義子類,並重寫父類方法 3.傳遞子類物...

python有多型嗎 Python 多型

python多型 思維導圖 多型概念 一種事物具備多種 不同的形態 例如 水 固態 液態 氣態 官方解釋 多個不同類的物件可以響應同乙個方法,產生不同的結果 首先強調多型不是一種特殊的語法,而是一種狀態 特性 即多個不同物件可以響應同乙個方法,產生不同結果 好處 對於使用者而言,大大的降低了使用難度...

python 多型性 Python 多型

返回python教程首頁 多型介紹多型之前,我們先看看什麼叫方法重寫。方法重寫 子類繼承父類,會繼承父類的所有方法,當父類方法無法滿足需求,可在子類中定義乙個同名方法覆蓋父類的方法,這就叫方法重寫。當子類的例項呼叫該方法時,優先呼叫子類自身定義的方法,因為它被重寫了。例如 class people ...