回覆列表
-
1 # 繁星落石
-
2 # Python進階學習交流
一般看到多型,就知道是面向物件的特點。而Python作為一門面向物件的語言,其也是有這個特點的。
多型,通俗的來說就是父類的一個方法,可以被子類使用,在該方法的基礎上,子類還擁有其他的方法,相當於發揚光大了,更加的多,而且不同。
-
3 # NC少年
OOP(面向物件程式設計)中,依賴於物件型別的行為,稱為多型。
廢話不說,直接上程式碼:
注意:introduciton()函式,是針對App型別程式設計,而不是Toutiao、Weixin、 Taobao三個具體型別,因為我們在編寫introduction()函式時,不知道有多少種具體的App, 也不可能遍歷所有的App具體型別(每天都有新的app被開發)。但是無論將來你擴充套件多少個App具體類,只要它遵守協議(即實現hello成員函式),我們的introduction()都可以正確執行。這就是多型,使得我們程式設計時不針對具體的子型別,而是父型別程式設計,這使得程式碼可以重用,開發效率大大提高。
因為python是動態型別語言,可能你看上述程式碼時覺得理所當然,但這背後隱藏著更深層次的東西。一旦上述程式碼放到靜態型別語言去實現,比如Java中,introduction函式的入參型別比必須提前定義好,你有兩個選擇,要麼是App父類,要麼是某個具體型別的App:如果是後者,你要程式碼擴充套件性會很差,會寫更多的程式碼;而如果是前者,恭喜你,你發揮了多型的威力。
正因為pytyon是動態型別,多型在Python中到處可見。比如“*”這個運算子(本質也是一個函式),對於int, string, list型別,都可以正確執行(見上圖的demo2部分)
python是面嚮物件語言,具有面向物件的特點,多型是其中之一。python多型實現了同一類的不同實現方式,符合面向物件程式設計的原則。