python多型理解 多型有啥用

2021-10-03 18:22:20 字數 2620 閱讀 6833

什麼是多型?

多型顧名思義多種狀態,在python中,不同的物件呼叫同乙個介面,表現出不同的狀態,稱為多型。

class

duck()

:def

who(self)

:print

("i am a duck"

)class

dog():

defwho

(self)

:print

("i am a dog"

)class

cat():

defwho

(self)

:print

("i am a cat"

)if __name__ ==

"__main__"

: duck=duck(

) dog=dog(

) cat=cat(

) duck.who(

) dog.who(

) cat.who(

)

輸出結果:

i am a duck

i am a dog

i am a cat

以上**是多型嗎?雖然不同的物件呼叫同乙個介面表現出不同狀態,但是!!這不是多型!要實現多型有兩個前提:

1.繼承:多型必須發生在父類與子類之間

2.重寫:子類重寫父類方法

把以上**進行修改,使之繼承父類,才實現多型,如下:

class

animal()

:def

who(self)

:print

("i am an animal"

)class

duck

(animal)

:def

who(self)

:print

("i am a duck"

)class

dog(animal)

:def

who(self)

:print

("i am a dog"

)class

cat(animal)

:def

who(self)

:print

("i am a cat"

)if __name__ ==

"__main__"

: duck=duck(

) dog=dog(

) cat=cat(

) duck.who(

) dog.who(

) cat.who(

)

多型有什麼用?

其實以上**實際貌似沒啥用,為什麼一定要去定義通過同乙個函式名?我定義who1,who2,who3不可以嗎?**量也一樣啊!

其實真正體驗出多型好處的**一般是這樣寫的

class

animal()

:def

who(self)

:print

("i am an animal"

)class

duck

(animal)

:def

who(self)

:print

("i am a duck"

)class

dog(animal)

:def

who(self)

:print

("i am a dog"

)class

cat(animal)

:def

who(self)

:print

("i am a cat"

)def

func

(obj)

: obj.who(

)if __name__ ==

"__main__"

: duck=duck(

) dog=dog(

) cat=cat(

) func(duck)

func(dog)

func(cat)

僅僅需要乙個函式,就可以把不同物件的who函式表現出來了。這就增加了程式的靈活性,以不變應萬變,不管你類中的who()寫得如何得天花亂墜,我都可以用乙個統一的形式來呼叫。另外,它增加了程式的可擴充套件性,不管是我們或者呼叫者,如果想增加新的功能,都不需要修改原來的**。

例如,我想新增乙個bird類,僅需增加以下**,無需修改原來的。

class

bird

(animal)

:def

who(self)

:print

("i am a bird"

)

對於呼叫者,也僅需增加以下**,無需修改原來的。

bird=bird(

)func(bird)

所以說多型有什麼用?一是增加程式的靈活性,二是增加程式的可擴充套件性

以上,菜鳥一枚,如有不當指出,請指出。

python有多型嗎 Python 多型

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

python多型的理解 解釋多型性

你得到的答案是好的,並解釋什麼是多型性。我認為這也有助於理解它有用的一些原因。在某些缺乏多型性的語言中,您會發現自己處於這樣一種情況 您希望對不同型別的物件執行概念上相同的操作,而在這種情況下,必須為每種型別實現不同的操作。例如,在類似python的語法中 def dosomething thing...

python中多型和多型性的理解

多型怎麼理解?一類事物,有多種形態,比如動物類,可以有貓 狗 雞。乙個抽象類有許多子類 class animal object deftalk self pass class cat animal 動物的形態一 貓 deftalk self print 這是貓 class dog animal 動物...