在以下示例中,如果我將CL2中的super替換爲「in cl2 test cl5」中的self.test(),則會得到相同的輸出。超級如何做出任何改變。在python中是否超級冗餘?
class CL1(object):
def test(self):
print "test cl1"
class CL2(CL1):
def abc(self):
print "in cl2"
super(CL2,self).test()
#self.test()
class CL3(CL1):
def test(self):
print "test cl3"
class CL5(CL1):
def test(self):
print "test cl5"
class CL4(CL2,CL5,CL3):
def add(self):
print 'cl4'
def main()
o=CL4()
o.abc()
if __name__ == "__main__":
main()
有趣的問題。當對「對象」以外的任何其他對象進行子類化時,這是絕對必要的。 –
'super'被誤稱;它不一定是指使用它的類的(單個)靜態定義的父類。 – chepner