7多态与多态性
多態(tài)
多態(tài)指的是一類事物有多種形態(tài),比如
動(dòng)物有多種形態(tài):人,狗,豬
import abc class Animal(metaclass=abc.ABCMeta): #同一類事物:動(dòng)物@abc.abstractmethoddef talk(self):passclass People(Animal): #動(dòng)物的形態(tài)之一:人def talk(self):print('say hello')class Dog(Animal): #動(dòng)物的形態(tài)之二:狗def talk(self):print('say wangwang')class Pig(Animal): #動(dòng)物的形態(tài)之三:豬def talk(self):print('say aoao')所以多態(tài)是建立在繼承的
多態(tài)性
一?什么是多態(tài)動(dòng)態(tài)綁定(在繼承的背景下使用時(shí),有時(shí)也稱為多態(tài)性)
多態(tài)性是指在不考慮實(shí)例類型的情況下使用實(shí)例,多態(tài)性分為靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性
靜態(tài)多態(tài)性:如任何類型都可以用運(yùn)算符+進(jìn)行運(yùn)算
動(dòng)態(tài)多態(tài)性:如下
peo=People() dog=Dog() pig=Pig()#peo、dog、pig都是動(dòng)物,只要是動(dòng)物肯定有talk方法 #于是我們可以不用考慮它們?nèi)叩木唧w是什么類型,而直接使用 peo.talk() dog.talk() pig.talk()#更進(jìn)一步,我們可以定義一個(gè)統(tǒng)一的接口來使用 def func(obj):obj.talk()二 為什么要用多態(tài)性(多態(tài)性的好處)
其實(shí)大家從上面多態(tài)性的例子可以看出,我們并沒有增加什么新的知識(shí),也就是說python本身就是支持多態(tài)性的,這么做的好處是什么呢?
1.增加了程序的靈活性
以不變應(yīng)萬變,不論對象千變?nèi)f化,使用者都是同一種形式去調(diào)用,如func(animal)
2.增加了程序額可擴(kuò)展性
通過繼承animal類創(chuàng)建了一個(gè)新的類,使用者無需更改自己的代碼,還是用func(animal)去調(diào)用
?轉(zhuǎn)載于:https://www.cnblogs.com/sunny666/p/9685454.html
總結(jié)
- 上一篇: git clone 指定分支的内容
- 下一篇: sort注意事项