前言:
與第一篇的面向?qū)ο髢?nèi)容不同的是,第一篇中的面向?qū)ο蟾嗟氖桥c類、對象結(jié)合起來的概念粗淺理解,就是在編程歷史中誕生的一種思想方法。
這篇的面向?qū)ο缶幊蹋嗦鋵?shí)到在語言設(shè)計(jì)實(shí)現(xiàn)中,是如何體現(xiàn)面向?qū)ο筮@一設(shè)計(jì)思想的。
Content:
- 類和對象的多態(tài)
- - 多態(tài)和鴨子類型
1.什么是多態(tài)?
2.什么是鴨子類型?
3.動態(tài)python的多態(tài)和其他動態(tài)語言的區(qū)別? 和靜態(tài)語言多態(tài)的區(qū)別?
4.python語言中鴨子類型的應(yīng)用?
(
下篇內(nèi)容:
- 類和對象的封裝、繼承
- - 抽象基類
- - 類屬性,實(shí)例屬性和其查找順序
- - 靜態(tài)方法、類方法、對象方法
- - 數(shù)據(jù)封裝和私有屬性
- - python的自省機(jī)制
- - python中的super函數(shù)
- - django中的繼承
- - 上下文管理器
)
?
一? 類的多態(tài)和鴨子類型
1.什么是多態(tài)?
? ? 同一操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果,這就是多態(tài)性。
? ? 簡單來說,就是有一個(gè)父類,很多子類繼承了父類的方法但是對父類的方法進(jìn)行了自己的定制(或者是在python中很多不同的類實(shí)現(xiàn)了同一個(gè)名字的方法),我生成這些子類的所有對象都有同一個(gè)方法,調(diào)用這些對象的相同方法但是有不同的結(jié)果。
? ? 多態(tài)的好處:
? ? a.應(yīng)用程序不必為每一個(gè)派生類編寫功能調(diào)用,只需要對抽象基類進(jìn)行處理即可。大大提高程序的 可復(fù)用性 。//繼承?
? ? b.派生類的功能可以被基類的方法或引用變量所調(diào)用,這叫向后兼容,可以提高 可擴(kuò)充性 和 可維護(hù)性 。? ? ?//多態(tài)的真正作用
?
2.什么是鴨子類型?
? ? 即所有的類都實(shí)現(xiàn)了同一種方法,調(diào)用得時(shí)候可以同時(shí)調(diào)用這一種方法。在任何對象中,指定某一個(gè)方法名,所有類都可以通用,就為鴨子類型。 (是不是很像多態(tài)的概念?)
class Animals(): def say(self): print ( " say something " ) class Duck(Animals): def say(self): print ( " gaga " ) class Dog(Animals): def say(self): print ( " wangwang " ) class Miao(Animals): def say(self): print ( " miaomiao " )
class Cat(): def say(self): print ( " 喵 " ) class Dog(): def say(self): print ( " 汪 " ) class Duck(): def say(self): print ( " gaga " ) animals_list = [Cat,Dog,Duck] for i in animals_list: i().say()
4.鴨子類型在python語言設(shè)計(jì)中的實(shí)際應(yīng)用?
例用list實(shí)現(xiàn)了的extend方法來看。
描述:extend() 函數(shù)用于在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來的列表)。
語法:extend()方法語法: list . extend ( seq )
.png)
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
