super question

Lee Harr missive at frontiernet.net
Tue Apr 8 17:25:42 CEST 2003


> If all your classes only have one parent, it doesn't make a
> difference.  If your classes a) use multiple inheritance, b) several
> of them define a method with the same name, and c) all of them call
> super() to execute that method, then python does some really neat
> stuff to ensure that all the methods of that name get called, and that
> it occurs in the "correct" order.
> 
> So super() is preferable if a) you're redefining a method but want to
> call the base class method(s), and b) your class is part of a multiple
> inheritance graph OR may be used in a multiple inheritance graph.
> 
> Disclaimer:  I'm new to this stuff myself, so if somebody's got a
> better explanation, please speak up!


I guess I do not get it.


>>> class A(object):
...   def f(self):
...     print 'Af'
... 
>>> class B(object):
...   def f(self):
...     print 'Bf'
... 
>>> class C(A, B):
...   def f(self):
...     super(C, self).f()
... 
>>> c=C()
>>> c.f()
Af


Should this be showing
Af
Bf
?

How would I even get that output?  I know I can do:

class C(A, B):
  def f(self):
    A.f(self)
    B.f(self)


but I can't seem to get that out of super()





More information about the Python-list mailing list