物件導向有封裝,繼承,多型三大特性,我們在這裡主要介紹python中的多型.
多型(polymorphism)按字面的意思就是「多種狀態」。在物件導向語言中,介面的多種不同的實現方式即為多型。引用charlie calverts對多型的描述——多型性是允許你將父物件設定成為乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作(摘自「delphi4 程式設計技術內幕」)。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。多型性在object pascal和c++中都是通過虛函式實現的。
上面所說的多型必須是在有繼承的前提下,然而python中的多型卻也可以繼承就實現多型.
先來看乙個有繼承版的多型,傳入函式fun中的物件不一樣便會產生不同執行效果
class animal(object):
def eat(self):
pass
class dog(object):
def eat(self):
print('eat fish')
class cat(object):
def eat(self):
print('eat bone')
def fun(obj):
obj.eat()
def main():
fun(dog())
fun(cat())
if __name__ == '__main__':
main()
但如果我們把dog和cat的父類animal去除掉之後會發現,程式依舊是可以執行的,也就是python中的多型並非是嚴格意義上的多型,只要物件中存在eat()方法便可以將該物件傳入fun中執行. python中的多型
coding cp936 python 27 xiaodeng python中的多型 多型 乙個操作的意義取決於被操作物件的型別,相同的訊息給予不同的物件會引發不同的動作。多型意味著變數並不知道引用的物件是什麼,根據引用物件的不同表現不同的行為方式 在處理多型物件時,只需要關注他的介面即可 同乙個操...
python中的多型
coding cp936 python 27 xiaodeng python中的多型 多型 乙個操作的意義取決於被操作物件的型別,相同的訊息給予不同的物件會引發不同的動作。多型意味著變數並不知道引用的物件是什麼,根據引用物件的不同表現不同的行為方式 在處理多型物件時,只需要關注他的介面即可 同乙個操...
python 中的多型
動態語言的多型和靜態語言c 等多型含義不太一樣,c 中的多型就是引數數量和型別不同的方法就是不同方法,而動態語言中的多型其實值的是方法的尋找過程,即向右找到類 或者單件類 在類中找不到的話再找父類,一直在祖先鏈中找到或者找不到為止,先找到的就被呼叫 class myclass object deff...