class in the mro sequencea super call in class' method propagates the call through the treeso long as all classes do the same in this mode super does not necessarily choose superclass at allit picks the next in the linearized mrowhich might be sibling--or even lower relative--in the class tree of given instance see "tracing the mroon page for other examples of the path super dispatch would followespecially for nondiamonds the preceding works--and may even seem clever at first glance--but its scope may also appear limited to some most python programs do not rely on the nuances of diamond pattern multiple inheritance trees (in factmany python programmers 've met do not know what the term means!moreoversuper applies most directly to single inheritance and cooperative diamond casesand may seem superfluous for disjoint nondiamond caseswhere we might want to invoke superclass methods selectively or independently even cooperative diamonds can be managed in other ways that may afford programmers more control than an automatic mro ordering can to evaluate this tool objectivelythoughwe need to look deeper constraintcall chain anchor requirement the super call comes with complexities that may not be apparent on first encounterand may even seem initially like features for examplebecause all classes inherit from object in automatically (and explicitly in new-style classes)the mro ordering can be used even in cases where the diamond is only implicit--in the followingtriggering constructors in independent classes automaticallyclass bdef __init__(self)print(' __init__')super(__init__(class cdef __init__(self)print(' __init__')super(__init__( ( __init__ ( __init__ object is an implied super at the end of mro class (bc)pass ( __init__ __init__ inherits __init__ but ' mro differs for runs __init__c is next super in self' mrotechnicallythis dispatch model generally requires that the method being called by super must existand must have the same argument signature across the class treeand every appearance of the method but the last must use super itself this prior example works only because the implied object superclass at the end of the mro of all three classes happens to have compatible __init__ that satisfies these rulesb __mro__ (the super built-in functionfor better or worse