Super Wing Station

The price of a Super Bowl staple – chicken wings – is expected to rise slightly as fans gear up for Super Bowl LIX, according to a Texas A&M Ag r iLife Extension Service expert. Chicken wings – ...

Super Wing Station 1

super() is a special use of the super keyword where you call a parameterless parent constructor. In general, the super keyword can be used to call overridden methods, access hidden fields or invoke a superclass's constructor.

The benefits of super() in single-inheritance are minimal -- mostly, you don't have to hard-code the name of the base class into every method that uses its parent methods. However, it's almost impossible to use multiple-inheritance without super(). This includes common idioms like mixins, interfaces, abstract classes, etc. This extends to code that later extends yours. If somebody later wanted ...

Super Wing Station 3

In fact, multiple inheritance is the only case where super() is of any use. I would not recommend using it with classes using linear inheritance, where it's just useless overhead.

Super Wing Station 4

Just a heads up... with Python 2.7, and I believe ever since super() was introduced in version 2.2, you can only call super() if one of the parents inherit from a class that eventually inherits object (new-style classes).

Super Wing Station 5

Thirdly, when you call super() you do not need to specify what the super is, as that is inherent in the class definition for Child. Below is a fixed version of your code which should perform as you expect.

As for chaining super::super, as I mentionned in the question, I have still to find an interesting use to that. For now, I only see it as a hack, but it was worth mentioning, if only for the differences with Java (where you can't chain "super").

Super Wing Station 7