In the following example I get the same output if I replace super in CL2 with self.test() which is " in cl2 test cl5". How exactly does super make any difference.
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()