欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python教程之Python多態(tài)的深層次理解

 更新時間:2021年09月13日 10:24:38   作者:季布,  
相信很多在學(xué)Python的朋友都有了解過多態(tài),本篇文章來帶大家更進一步的深入了解Python多態(tài),有需要的朋可以借鑒參考下,希望可以有所幫助

前言:

多態(tài)的實現(xiàn)必須滿足兩個前提條件

  • 1.繼承:多態(tài)一定是發(fā)生在子類和父類之間
  • 2.重寫:多態(tài)子類重寫了父類的方法

記住這兩點再結(jié)合代碼示例有助于理解多態(tài)

#多態(tài)的代碼實例
class Farther:
	def behavior(self,action):
		print("父親會%s" % action)
# 定義Son類繼承Farther類
class Son(Farther):
	def behavior(self,action):
		print("兒子會%s" % action)
# 定義Grandson類繼承Farther類
class Grandson(Farther):
	def behavior(self,action):
		print("孫子會%s" % action)
# 使用Farter類創(chuàng)建對象
# 程序在執(zhí)行時才會確定behavior方法是屬于哪一個對象的
f = Farther()
print(id(f))
f.behavior("吃飯")   #父親會吃飯
f = Son()
print(id(f))
f.behavior("吃飯")   #兒子會吃飯
f = Grandson()
print(id(f))
f.behavior("吃飯")   #孫子會吃飯

運行結(jié)果:
1603040478928
父親會吃飯
1603040477584
孫子會吃飯
1603040478928
兒子會吃飯

從以上代碼示例可以看出,Son,Grandson這兩個子類都繼承了Farther類,且都重寫了父類中的behavior方法;由此結(jié)果可見,同一個對象調(diào)用同一個(參數(shù),函數(shù)名完全相同)behavior方法時,由于f指向的的實例對象不同,程序在實際運行時調(diào)用的并不是同一個behavior()方法,代碼會自動根據(jù)p的具體對象來決定執(zhí)行哪個behavior方法,這就是多態(tài)性

# 多態(tài)的應(yīng)用
class IceCream:
    def make_icecream(self,taste):
        print("尋找不同口味的冰淇淋...")
        taste.make(self)
# 定義抹茶味的冰淇淋和方法
class Tea:
    def make(self,make_icecream):
        print('%s 正在調(diào)用抹茶的制作方法' % make_icecream)
class Orange:
    def make(self,make_icecream):
        print('%s 正在調(diào)用抹茶的制作方法' % make_icecream)
class Apple:
    def make(self,make_icecream):
        print('%s 正在調(diào)用抹茶的制作方法' % make_icecream)
i = IceCream()
# 抹茶味
i.make_icecream(Tea())
# 橘子味
i.make_icecream(Orange())
#蘋果味
i.make_icecream(Apple())

# 執(zhí)行結(jié)果
尋找不同口味的冰淇淋...
<__main__.IceCream object at 0x000002700CF086D0> 正在調(diào)用抹茶的制作方法
尋找不同口味的冰淇淋...
<__main__.IceCream object at 0x000002700CF086D0> 正在調(diào)用抹茶的制作方法
尋找不同口味的冰淇淋...
<__main__.IceCream object at 0x000002700CF086D0> 正在調(diào)用抹茶的制作方法

解析:

從上述代碼可見,在調(diào)用IceCream類的make_icecream()方法時,程序并不關(guān)心為該方法傳入的參數(shù)對象taste是誰,只要求此參數(shù)對象taste包含make()方法即可,而調(diào)用者傳入的參數(shù)對象類型taste是子類還是其他類,Python并不在乎!

總結(jié)一句話就是:多態(tài)中不同的子類對象調(diào)用相同的父類方法,會產(chǎn)生不同的執(zhí)行結(jié)果

這里的多態(tài)性是指具有不同功能的函數(shù)可以使用相同的函數(shù)名,這樣就可以用一個函數(shù)名調(diào)用不同內(nèi)容的函數(shù)。

class Wechatpay:
    def __init__(self, name, money):
        self.name = name
        self.money = money
     def pay(self):
        print('%s通過微信支付了%s元' % (self.name, self.money))
class Alipay:
    def __init__(self, name, money):
        self.name = name
        self.money = money 
    def pay(self):
        print('%s通過支付寶支付了%s元' % (self.name, self.money))
 #這里的多態(tài)性體現(xiàn)是向同一個函數(shù),傳遞不同參數(shù)后,可以實現(xiàn)不同功能.
def pay(person):  
    person.pay()
# 實列化對象
ali = Alipay("xiaoming", 100)
wch = Alipay("xiaohong", 100)
pay(ali)
pay(wch)

以上就是Python教程之Python多態(tài)的深層次理解的詳細內(nèi)容,更多關(guān)于Python多態(tài)理解的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python設(shè)計實現(xiàn)的計算器功能完整實例

    Python設(shè)計實現(xiàn)的計算器功能完整實例

    這篇文章主要介紹了Python設(shè)計實現(xiàn)的計算器功能,結(jié)合完整實例形式分析了Python3.5實現(xiàn)計算器功能的正則、字符串及數(shù)值運算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 通過Python實現(xiàn)自動填寫調(diào)查問卷

    通過Python實現(xiàn)自動填寫調(diào)查問卷

    這篇文章主要介紹了通過Python實現(xiàn)自動填寫調(diào)查問卷的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • python腳本實現(xiàn)將excel表格數(shù)據(jù)拆分成兩個文件

    python腳本實現(xiàn)將excel表格數(shù)據(jù)拆分成兩個文件

    這篇文章主要為大家詳細介紹了如何用python腳本把一個表格有4萬多條數(shù)據(jù)分為兩個文件表,每個2萬條數(shù)據(jù),文中的示例代碼講解詳細,有需要的小伙伴可以了解下
    2025-04-04
  • python中的django是做什么的

    python中的django是做什么的

    在本篇文章里小編給大家整理了關(guān)于python中的django作用以及相關(guān)基礎(chǔ)知識點,需要的朋友們學(xué)習(xí)下。
    2020-07-07
  • Python使用單例模式創(chuàng)建類的實現(xiàn)示例

    Python使用單例模式創(chuàng)建類的實現(xiàn)示例

    本文詳細介紹了Python中實現(xiàn)單例模式的多種方式,包括元類、threading.Lock、模塊、importlib、__new__方法和裝飾器等,感興趣的可以了解一下
    2024-12-12
  • Python中使用haystack實現(xiàn)django全文檢索搜索引擎功能

    Python中使用haystack實現(xiàn)django全文檢索搜索引擎功能

    django是python語言的一個web框架,功能強大。配合一些插件可為web網(wǎng)站很方便地添加搜索功能。下面通過本文給大家分享Python中使用haystack實現(xiàn)django全文檢索搜索引擎功能,感興趣的朋友一起看看吧
    2017-08-08
  • Python進階之尾遞歸的用法實例

    Python進階之尾遞歸的用法實例

    本篇文章主要介紹了Python進階之尾遞歸的用法實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • python numpy數(shù)組復(fù)制使用實例解析

    python numpy數(shù)組復(fù)制使用實例解析

    這篇文章主要介紹了python numpy數(shù)組復(fù)制使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python中random.choice()函數(shù)的使用

    Python中random.choice()函數(shù)的使用

    random.choice()?是 Python 標準庫?random?模塊中的一個函數(shù),用于從一個?非空序列?中?隨機選擇一個元素,本文主要介紹了Python中random.choice()函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • Python基于GDAL鑲嵌拼接遙感影像

    Python基于GDAL鑲嵌拼接遙感影像

    這篇文章主要介紹了Python基于GDAL鑲嵌拼接遙感影像, 這里有一點需要注意的就是,用這個方法進行鑲嵌拼接操作時,影像有一條明顯的拼接線,不知道是不是我數(shù)據(jù)的問題,你們可以自己嘗試一下,只要修改主函數(shù)中的路徑即可,需要的朋友可以參考下
    2023-10-10

最新評論