多態(tài)即多種形態(tài),在運行時確定其狀態(tài),在編譯階段無法確定其類型,這就是多態(tài)。Python中的多態(tài)和Java以及C++中的多態(tài)有點不同,Python中的變量是弱類型的,在定義時不用指明其類型,它會根據(jù)需要在運行時確定變量的類型(個人覺得這也是多態(tài)的一種體現(xiàn)),并且Python本身是一種解釋性語言,不進行預(yù)編譯,因此它就只在運行時確定其狀態(tài),故也有人說Python是一種多態(tài)語言。在Python中很多地方都可以體現(xiàn)多態(tài)的特性,比如 內(nèi)置函數(shù)len(object),len函數(shù)不僅可以計算字符串的長度,還可以計算列表、元組等對象中的數(shù)據(jù)個數(shù),這里在運行時通過參數(shù)類型確定其具體的計算過程,正是多態(tài)的一種體現(xiàn)。有些朋友提出Python不支持多態(tài),我是完全不贊同的.
Python以它這種獨有的方式體現(xiàn)多態(tài)的根本原因我覺得有兩點:
1)Python是解釋性語言;
2)Python中變量是弱類型的。所以Python體現(xiàn)多態(tài)的方式和Java決然不同,但是不能因為同Java中體現(xiàn)多態(tài)的方式不同就認為Python不支持多態(tài),這種想法過于片面。
(1)沒有繼承就沒有多態(tài)
(2)如果函數(shù)方法參數(shù)中使用的是父類類型,則可以傳入父類和子類對象,而不用再去定義多個函數(shù)來和相應(yīng)的類進行匹配了。
(3)局限性:父類類型的變量不能直接調(diào)用子類特有的方法
雖然多態(tài)在Python中的特征并不明顯,這里我們還是了解一下多態(tài)的概念和意義。多態(tài)是指一個名稱可以表示多個對象,這多個對象有一個共同的超類。那么多態(tài)有什么作用呢,在靜態(tài)語言中,如Java,如果一個函數(shù)的形式參數(shù)是Person類型,則所有Person類型及其子類的對象都可以實際參數(shù)傳入該函數(shù)