首頁(yè)技術(shù)文章正文

Python培訓(xùn):python中多態(tài)的作用是什么?

更新時(shí)間:2022-10-19 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在強(qiáng)類型語(yǔ)言(例如Java或C#)中,多態(tài)是指允許使用一個(gè)父類類型的變量或常量來(lái)引用一個(gè)子類類型的對(duì)象,根據(jù)被引用子類對(duì)象特征的不同,得到不同的運(yùn)行結(jié)果。即使用父類的類型來(lái)調(diào)用子類的方法。

  在Python中,多態(tài)指在不考慮對(duì)象類型的情況下使用對(duì)象。相比于強(qiáng)類型,Python更推崇“鴨子類型”?!傍喿宇愋汀笔沁@樣推斷的:如果一只生物走起路來(lái)像鴨子,游泳起來(lái)像鴨子,叫起來(lái)也像鴨子,那么它就可以當(dāng)做鴨子。也就是說(shuō),它不關(guān)注對(duì)象的類型,而是關(guān)注對(duì)象具有的行為。

  例12-7 多態(tài).py

# 定義一個(gè)表示動(dòng)物的類
class Animal(object):
    def shout(self): # 叫的方法
        print("--Animal--shout--")
# 定義一個(gè)表示狗的類,繼承自動(dòng)物類
class Dog(Animal):
    def shout(self): # 重寫(xiě)父類的方法
        print("--汪汪--")
# 定義一個(gè)表示貓的類,繼承自動(dòng)物類
class Cat(Animal):
    def shout(self): # 重寫(xiě)父類的方法
       print("--喵喵--")
# 定義一個(gè)函數(shù)
def func(temp):
   temp.shout()
dog = Dog()
func(dog)
cat = Cat()
func(cat)

  在例12-7中,首先定義了Animal(動(dòng)物)類,該類中有個(gè)shout方法,其次定義了繼承自Animal的兩個(gè)子類Dog(狗)和Cat(貓),分別在兩個(gè)類中重寫(xiě)了shout方法,然后定義了一個(gè)帶參數(shù)的函數(shù)func,在該函數(shù)中調(diào)用了shout方法,最后分別創(chuàng)建了Dog類的對(duì)象dog和Cat類的對(duì)象cat,并作為參數(shù)調(diào)用了func函數(shù)。

  程序運(yùn)行的結(jié)果如圖12-12所示。

1666158551249_多態(tài).jpg

  圖12-12 運(yùn)行結(jié)果

  值得一提的是,func函數(shù)中沒(méi)有規(guī)定參數(shù)temp類型,它可以接收任意類型的對(duì)象,但是傳入的這些對(duì)象中必須有shout方法。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!