日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python中super的用法實例

系統 2122 0

super 是用來解決多重繼承問題的,直接用類名調用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重復調用(鉆石繼承)等種種問題??傊叭肆粝碌慕涷灳褪牵罕3忠恢滦?。要不全部用類名調用父類,要不就全部用 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 剑川县| 师宗县| 上虞市| 丹江口市| 溧阳市| 华蓥市| 芷江| 临沭县| 上虞市| 临泽县| 酒泉市| 呈贡县| 九江县| 门源| 城固县| 常宁市| 巴彦淖尔市| 苗栗市| 贵港市| 阿瓦提县| 兴文县| 丹凤县| 潞城市| 正蓝旗| 婺源县| 汝南县| 思南县| 乌恰县| 左权县| 额尔古纳市| 渑池县| 金川县| 福贡县| 高清| 武安市| 抚宁县| 竹山县| 阿瓦提县| 监利县| 和田市| 勐海县|