国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中super的用法實例

2020-01-04 18:08:07
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要介紹了Python中super的用法實例,本文對比了普通繼承和super繼承的相關內容,從運行結果上看,普通繼承和super繼承是一樣的,但是其實它們的內部運行機制不一樣,這一點在多重繼承時體現(xiàn)得很明顯,需要的朋友可以參考下
 

super 是用來解決多重繼承問題的,直接用類名調用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重復調用(鉆石繼承)等種種問題。總之前人留下的經(jīng)驗就是:保持一致性。要不全部用類名調用父類,要不就全部用 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繼承是一樣的。但是其實它們的內部運行機制不一樣,這一點在多重繼承時體現(xiàn)得很明顯。在super機制里可以保證公共父類僅被執(zhí)行一次,至于執(zhí)行的順序,是按照mro進行的(E.__mro__)。
注意super繼承只能用于新式類,用于經(jīng)典類時就會報錯。
新式類:必須有繼承的類,如果沒什么想繼承的,那就繼承object
經(jīng)典類:沒有父類,如果此時調用super就會出現(xiàn)錯誤:『super() argument 1 must be type, not classobj』

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹巴县| 神池县| 扶绥县| 灵台县| 乐至县| 灵武市| 攀枝花市| 台中市| 寿阳县| 邛崃市| 原平市| 晴隆县| 东方市| 逊克县| 武穴市| 恩平市| 辰溪县| 余江县| 凤山县| 滁州市| 泰顺县| 虹口区| 双桥区| 仙居县| 祁阳县| 习水县| 伊金霍洛旗| 扎囊县| 青州市| 宾川县| 平塘县| 武鸣县| 黄石市| 广西| 正定县| 福贡县| 滨海县| 谢通门县| 驻马店市| 八宿县| 江孜县|