什麼是多型?
多型顧名思義多種狀態,在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 動物...