super 是用來(lái)解決多重繼承問(wèn)題的,直接用類(lèi)名調(diào)用父類(lèi)方法在使用單繼承的時(shí)候沒(méi)問(wèn)題,但是如果使用多繼承,會(huì)涉及到查找順序(MRO)、重復(fù)調(diào)用(鉆石繼承)等種種問(wèn)題。總之前人留下的經(jīng)驗(yàn)就是:保持一致性。要不全部用類(lèi)名調(diào)用父類(lèi),要不就全部用 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')  
程序運(yùn)行結(jié)果相同,為:
 代碼如下:
Parent
Child            
新聞熱點(diǎn)
疑難解答
圖片精選