一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 總結python實現父類調用兩種方法的不同

總結python實現父類調用兩種方法的不同

2020-09-17 14:27hongweipeng Python

最近在工作中實現父類調用的時候發現了一個錯誤,然后通過分析實踐總結出來了,下面這篇文章主要給大家總結了python中實現父類調用兩種方法的不同之處,需要的朋友可以參考借鑒,下面來一起看看吧。

python中有兩種方法可以調用父類的方法:

super(Child, self).method(args)

 Parent.method(self, args)

我用其中的一種報了如下錯誤:

總結python實現父類調用兩種方法的不同

找不到 classobj。當我把調用改為 super(B, self).f(name) 就能正確運行,且結果正確。

分析錯誤

因為基類沒有繼承 object , 在python中,一個可以這樣創建:

?
1
2
class A:
 pass

也可以這樣創建:

?
1
2
class A(object):
 pass

這兩者的區別就是:

總結python實現父類調用兩種方法的不同

這是老式類(前者)和新式類(后者)的區別。區別可以參考:https://docs.python.org/release/2.5.2/ref/node33.html

python3已經把舊類型去掉了,也就是說已經隱式繼承了object,所以,python3中寫不寫繼承object都是沒有區別的

兩種調用的區別

Parent.__init__(self) super(Child, self).__init__() 的區別是什么?

super 理解成父類也是理所當然,python里其實指的是 MRO 中的下一個類!

super其實干了這件事,看這個答案:

?
1
2
3
def super(cls, inst):
 mro = inst.__class__.mro() # Always the most derived class
 return mro[mro.index(cls) + 1]

MRO 全稱 Method Resolution Order,它代表了類繼承的順序。

super 是用來解決多重繼承問題的,假設B C D 都是直接繼承class A

?
1
2
3
class E(B, C, D):
 def __init__(self):
  # code...

如果E類的構造函數使用 super(E, self).__init__() 時,A類的構造函數會被執行一次,而用另一種方法,A類的構造函數會被執行多次。

在 MRO 中,基類永遠出現在派生類后面,如果有多個基類,基類的相對順序保持不變。

總結

個人覺得,復雜的繼承結構是設計中不良的設計,當繼承結構清晰后,兩個方法其實就沒什么區別了。以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助。

原文鏈接:https://www.hongweipeng.com/index.php/archives/1065/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女张开腿黄网站免费精品动漫 | 精品无人区麻豆乱码无限制 | 日韩在线视精品在亚洲 | 国产免费资源高清小视频在线观看 | 边摸边吃奶边做爽视频免费 | 私人影院免费观看 | 好男人社区www影院在线观看 | 视频一区二区在线 | 国产精品国产三级国产专区不 | 免费看黄色片的网站 | 日本一区视频在线 | 亚洲理论视频 | 精品亚洲午夜久久久久 | 99精品视频免费在线观看 | 草逼的视频 | 91短视频版高清在线观看免费 | 国产福利专区精品视频 | 免费国产影视观看网站入口 | 私人家庭影院5577 | 农村美女沟厕嘘嘘被偷看 | 美女张开腿黄网站免费精品动漫 | 全彩孕交漫画福利啪啪吧 | 5g影院天天爽 | www在线看 | 五月最新女厕所高跟嘘嘘 | 高跟丝袜人妖sissy露出调教 | 91污污视频| 久久精品国产只有精品 | 91夜色视频 | 色一情一区二区三区四区 | 538免费精品视频搬运工 | a片毛片在线免费看 | 丰满大屁股美女一级毛片 | 王的视频视ivk | 美女胸又大又黄又www小说 | 亚洲欧美一区二区三区在饯 | 日韩免费在线观看 | 国产一及毛片 | ipx358cn出差被男上司在线 | 日韩免费一区 | 好大好硬好长好爽a网站 |