super question

Lee Harr missive at
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()

Should this be showing

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

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

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

More information about the Python-list mailing list