亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python中super的用法實例

系統 1931 0

super 是用來解決多重繼承問題的,直接用類名調用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重復調用(鉆石繼承)等種種問題。總之前人留下的經驗就是:保持一致性。要不全部用類名調用父類,要不就全部用 super,不要一半一半。

普通繼承

復制代碼 代碼如下:

class FooParent(object):?
??? def __init__(self):?
??????? self.parent = 'I\'m the parent.'?
??????? print 'Parent'?
?????
??? def bar(self,message):?
??????? print message, 'from Parent'?
?????????
class FooChild(FooParent):?
??? def __init__(self):?
??????? FooParent.__init__(self)?
??????? print 'Child'?
?????????
??? def bar(self,message):?
??????? FooParent.bar(self,message)?
??????? print 'Child bar function.'?
??????? print self.parent?
?????????
if __name__=='__main__':?
??? fooChild = FooChild()?
??? fooChild.bar('HelloWorld')?

super繼承

復制代碼 代碼如下:

class FooParent(object):?
??? def __init__(self):?
??????? self.parent = 'I\'m the parent.'?
??????? print 'Parent'?
?????
??? def bar(self,message):?
??????? print message,'from Parent'?
?
class FooChild(FooParent):?
??? def __init__(self):?
??????? super(FooChild,self).__init__()?
??????? print 'Child'?
?????????
??? def bar(self,message):?
??????? super(FooChild, self).bar(message)?
??????? print 'Child bar fuction'?
??????? print self.parent?
?
if __name__ == '__main__':?
??? fooChild = FooChild()?
??? fooChild.bar('HelloWorld')?

程序運行結果相同,為:

復制代碼 代碼如下:

Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.

從運行結果上看,普通繼承和super繼承是一樣的。但是其實它們的內部運行機制不一樣,這一點在多重繼承時體現得很明顯。在super機制里可以保證公共父類僅被執行一次,至于執行的順序,是按照mro進行的(E.__mro__)。
注意super繼承只能用于新式類,用于經典類時就會報錯。
新式類:必須有繼承的類,如果沒什么想繼承的,那就繼承object
經典類:沒有父類,如果此時調用super就會出現錯誤:『super() argument 1 must be type, not classobj』

關于super用法的詳細研究可參考「//www.jb51.net/article/66912.htm」


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成在线人视频免费视频 | 欧美精品一区二区在线观看 | 久久图片| 一级毛片 在线播放 | 99热久久久久久久免费观看 | 奇米吧 | 久久久婷婷 | 视频国产免费 | 高清一区二区亚洲欧美日韩 | 日本一极毛片兔费看 | 欧美激情在线免费观看 | 毛片毛片毛片毛片出来毛片 | 九九九精品视频 | 狠狠插狠狠干 | free性欧美video69 | 夜夜操免费视频 | 色综合亚洲综合网站综合色 | 欧美综合图区亚洲综合图区 | 国产一区二区在线免费观看 | 国产日韩欧美在线一区二区三区 | 啪啪一级片 | 久草在现视频 | 欧美日韩亚洲国产一区二区三区 | 99成人国产精品视频 | 欧美精品亚洲精品日韩专 | 999久久狠狠免费精品 | 日本不卡一区二区三区 | 久久精品视频1 | 色综合久久88色综合天天 | 国产精品玖玖玖在线观看 | 国产精品久久免费 | 美女网站视频免费 | 99热99在线| 久久久久免费精品国产 | 青青久久99久久99久久999 | 亚洲色婷婷综合开心网 | 澳门久久精品 | 在线看片日韩 | 亚洲国产欧美精品一区二区三区 | 99精品免费 | 777精品视频 |