trouble understanding super()

John Salerno johnjsal at NOSPAMgmail.com
Mon Jul 31 11:39:47 EDT 2006


Here's some code from Python in a Nutshell. The comments are lines from 
a previous example that the calls to super replace in the new example:

class A(object):
     def met(self):
         print 'A.met'

class B(A):
     def met(self):
         print 'B.met'
         # A.met(self)
         super(B, self).met()

class C(A):
     def met(self):
         print 'C.met'
         # A.met(self)
         super(C, self).met()

class D(B, C):
     def met(self):
         print 'D.met'
         # B.met()
         # C.met()
         super(D, self).met()

Then you call D().met()

Now, I understand that the commented code would cause A.met to be called 
twice. But why does the second version (with super) not also do this? I 
guess my problem lies in not understanding exactly what the super 
function returns.

super(D, self).met() seems like it would return something that has to do 
with both B and C, which each in turn return a superobject having to do 
with A, so why isn't A.met called twice still?

Thanks!



More information about the Python-list mailing list