国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Python多態(tài)

2019-11-14 16:59:25
字體:
供稿:網(wǎng)友

多態(tài):在編輯時無法確定狀態(tài),在運行時才確定。由于Python為動態(tài)語言,參數(shù)類型沒定,所以本身即是多態(tài)的

1:由繼承實現(xiàn)多態(tài)

 1 class Animal: 2     def move(self): 3         PRint('Animal is moving') 4  5 class Dog: 6     def move(self): 7         print('Dog is running') 8  9 class Fish:10     def move(self):11         print('Fish is swimming')12 13 Animal().move()14 Dog().move()15 Fish().move()

結(jié)果:

Animal is moving
Dog is running
Fish is swimming

 

2:通過重載實現(xiàn)多態(tài)

 

1 #在子類中:2 3 class child:4     def start(self):5         print('....')6         super().start()7         print('......')

 

3:動態(tài)語言特性(參數(shù)類型不定)與鴨子模型

例子1:類實例為參數(shù)

class Animal:    def move(self):        print('Animal is moving')class Dog:    def move(self):        print('Dog is running')class Fish:    def move(self):        print('Fish is swimming')def move(obj):        #obj為實例參數(shù)    obj.move()            move(Animal())move(Dog())move(Fish())

----------------類作為參數(shù)-------------

class Moveable:    def move(self):        print('Move...')class MoveOnFeet(Moveable):    def move(self):        print("Move on Feet.")class MoveOnWheel(Moveable):    def move(self):        print("Move on Wheels.")        #-------------------------------------------------------------------        class MoveObj:    def set_move(self,moveable):                                #moveable為類        self.moveable = moveable()    def move(self):        self.moveable.move()                               #通過moveable實例調(diào)用到不同的類class Test:    def move(slef):        print("I'm Fly.")if __name__ == '__main__':    m = MoveObj()        m.set_move(Moveable)    m.move()        m.set_move(MoveOnFeet)    m.move()        m.set_move(MoveOnWheel)    m.move()        m.set_move(Test)    m.move()

結(jié)果:

Move...
Move on Feet.
Move on Wheels.
I'm Fly.

 

例子2:函數(shù)名為參數(shù)

def movea():
print('Move a.')

def moveb():
print('Move b.')

class MoveObj:
def __init__(self,moveable): #moveable為函數(shù)參數(shù)
self.moveable = moveable #綁定函數(shù)名參數(shù)
self.moveable() #調(diào)用函數(shù)


if __name__ == '__main__':
a = MoveObj(movea)
b = MoveObj(moveb)

 

結(jié)果:

move a

move b

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 勐海县| 德昌县| 临武县| 阜康市| 荥阳市| 丰原市| 镇康县| 岱山县| 石台县| 绿春县| 南丰县| 安仁县| 福贡县| 基隆市| 西峡县| 噶尔县| 临江市| 上杭县| 营口市| 益阳市| 甘洛县| 新疆| 南平市| 安丘市| 吉水县| 平谷区| 平利县| 湟中县| 西峡县| 奈曼旗| 巴中市| 托克托县| 恩平市| 河津市| 盘锦市| 平泉县| 淳安县| 乌兰察布市| 临西县| 铜川市| 遵义市|