in many morethough its basis is complexthe next sections attempt to rally support for the super cause the super upsidestree changes and dispatch having just shown you the downsides of superi should also confess that 've been tempted to use this call in code that would only ever run on xand which used very long superclass reference path through module package (that ismostly for lazinessbut coding brevity can matter tooto be fairsuper may still be useful in some use casesthe chief among which merit brief introduction herechanging class trees at runtimewhen superclass may be changed at runtimeit' not possible to hardcode its name in call expressionbut it is possible to dispatch calls via super on the other handthis case is extremely rare in python programmingand other techniques can often be used in this context as well cooperative multiple inheritance method dispatchwhen multiple inheritance trees must dispatch to the same-named method in multiple classessuper can provide protocol for orderly call routing on the other handthe class tree must rely upon the ordering of classes by the mro-- complex tool in its own right that is artificial to the problem program is meant to address--and must be coded or augmented to use super in each version of the method in the tree to be effective such dispatch can also often be implemented in other ways ( via instance stateas discussed earliersuper can also be used to select superclass generically as long as the mro' default makes sensethough in traditional code naming superclass explicitly is often preferableand may even be required moreovereven valid super use cases tend to be uncommon in many python programs--to the point of seeming academic curiosity to some the two cases just listedhoweverare most often cited as super rationalesso let' take quick look at each runtime class changes and super superclass that might be changed at runtime dynamically preclude hardcoding their names in subclass' methodswhile super will happily look up the current superclass dynamically stillthis case may be too rare in practice to warrant the super model by itselfand can often be implemented in other ways in the exceptional cases where it is needed to illustratethe following changes the superclass of dynamically by changing the subclass' __bases__ tuple in xclass xdef (self)print(' 'class ythe super built-in functionfor better or worse