classes)the applications are broader than you might expect in factsome of the earlier examples that demonstrated super shortcomings in multiple inheritance trees could use this call to achieve their dispatch goals to do sohoweversuper must be used universally in the class tree to ensure that method call chains are passed on-- fairly major requirement that may be difficult to enforce in much existing and new code the basicscooperative super call in action let' take look at what this role means in code in this and the following sectionswe'll both learn how super worksand explore the tradeoffs it implies along the way to get startedconsider the following traditionally coded python classes (condensed somewhat here as usual for space)class bdef __init__(self)print(' __init__'class cdef __init__(self)print(' __init__'class (bc)pass ( __init__ disjoint class tree branches runs leftmost only by default in this casesuperclass tree branches are disjoint (they don' share common explicit ancestor)so subclasses that combine them must call through each superclass by name -- common situation in much existing python code that super cannot address directly without code changesclass (bc)def __init__(self) __init__(selfc __init__(selftraditional form invoke supers by name ( __init__ __init__ in diamond class tree patternsthoughexplicit-name calls may by default trigger the top-level class' method more than oncethough this might be subverted with additional protocols ( status markers in the instance)class adef __init__(self)print(' __init__'class ( )def __init__(self)print(' __init__') __init__(selfclass ( )def __init__(self)print(' __init__') __init__(selfx ( __init__ __init__ ( __init__ each super works by itself the super built-in functionfor better or worse