前言:
與第一篇的面向對象內容不同的是,第一篇中的面向對象更多的是與類、對象結合起來的概念粗淺理解,就是在編程歷史中誕生的一種思想方法。
這篇的面向對象編程,更多落實到在語言設計實現中,是如何體現面向對象這一設計思想的。
Content:
- 類和對象的多態
- - 多態和鴨子類型
1.什么是多態?
2.什么是鴨子類型?
3.動態python的多態和其他動態語言的區別? 和靜態語言多態的區別?
4.python語言中鴨子類型的應用?
(
下篇內容:
- 類和對象的封裝、繼承
- - 抽象基類
- - 類屬性,實例屬性和其查找順序
- - 靜態方法、類方法、對象方法
- - 數據封裝和私有屬性
- - python的自省機制
- - python中的super函數
- - django中的繼承
- - 上下文管理器
)
?
一? 類的多態和鴨子類型
1.什么是多態?
? ? 同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果,這就是多態性。
? ? 簡單來說,就是有一個父類,很多子類繼承了父類的方法但是對父類的方法進行了自己的定制(或者是在python中很多不同的類實現了同一個名字的方法),我生成這些子類的所有對象都有同一個方法,調用這些對象的相同方法但是有不同的結果。
? ? 多態的好處:
? ? a.應用程序不必為每一個派生類編寫功能調用,只需要對抽象基類進行處理即可。大大提高程序的 可復用性 。//繼承?
? ? b.派生類的功能可以被基類的方法或引用變量所調用,這叫向后兼容,可以提高 可擴充性 和 可維護性 。? ? ?//多態的真正作用
?
2.什么是鴨子類型?
? ? 即所有的類都實現了同一種方法,調用得時候可以同時調用這一種方法。在任何對象中,指定某一個方法名,所有類都可以通用,就為鴨子類型。 (是不是很像多態的概念?)
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語言設計中的實際應用?
例用list實現了的extend方法來看。
描述:extend() 函數用于在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)。
語法:extend()方法語法: list . extend ( seq )
.png)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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