在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ 多重繼承中沒(méi)使用super也可以調(diào)用父類(lèi)方法嗎?

多重繼承中沒(méi)使用super也可以調(diào)用父類(lèi)方法嗎?

本人構(gòu)建了一個(gè)菱形問(wèn)題的繼承關(guān)系,對(duì)于 super 能夠按照 MRO 調(diào)用父類(lèi)方法是可以理解的,但是對(duì)于沒(méi)使用 super 情況利用 self.pong() 也能夠調(diào)用類(lèi) B 的方法苦思不解。下面是具體代碼:

class A:
    def ping(self):
        print("A-ping:", self)

class B(A):
    def pong(self):
        print("B-pong:", self)

class C(A):
    def pong(self):
        print("C-PONG:", self)

class D(B, C):
    def ping(self):
        print("D-ping:", self)
        super().ping()
        
    def pingpong(self):
        self.ping()
        super().ping()
        self.pong()
        super(B, D).pong(self)
d = D()
d.pingpong()

其中 self.pong() 輸出對(duì)應(yīng)為:

B-pong: <__main__.D object at 0x000001B77096EAC8>

類(lèi) D 中沒(méi)使用 super 也可以調(diào)用父類(lèi) Bpong 方法嗎?
還是說(shuō)我對(duì)類(lèi)的繼承理解的不好?請(qǐng)明白的前輩幫忙指點(diǎn)一下,感激不盡?。。?/p>

回答
編輯回答
掛念你

只要你沒(méi)有重寫(xiě)父類(lèi)的方法,你不要利用super就可以,擁有父類(lèi)B的方法,全繼承過(guò)來(lái),當(dāng)然可以調(diào)用了

2017年1月23日 13:28
編輯回答
熟稔

繼承是面向?qū)ο蟮闹匾卣髦?,使得子?lèi)擁有了父類(lèi)的公有變量和方法,這和是否使用super無(wú)關(guān)。
super主要是新式類(lèi)中為了解決繼承過(guò)程中的查找順序(MRO)、重復(fù)調(diào)用等問(wèn)題引入的辦法。

2018年1月26日 02:39