firstcall_me of subclass calls super(call_me()which happens to refer to leftsubclass call_me(the leftsubclass call_me(method then calls super(call_me()but in this casesuper(is referring to rightsubclass call_ me(pay particular attention to thisthe super call is not calling the method on the superclass of leftsubclass (which is baseclassratherit is calling rightsubclasseven though it is not direct parent of leftsubclassthis is the next methodnot the parent method rightsubclass then calls baseclass and the super calls have ensured each method in the class hierarchy is executed once different sets of arguments this is going to make things complicated as we return to our friend multiple inheritance example in the __init__ method for friendwe were originally calling __init__ for both parent classeswith different sets of argumentscontact __init__(selfnameemailaddressholder __init__(selfstreetcitystatecodehow can we manage different sets of arguments when using superwe don' necessarily know which class super is going to try to initialize first even if we didwe need way to pass the "extraarguments so that subsequent calls to superon other subclassesreceive the right arguments specificallyif the first call to super passes the name and email arguments to contact __init__and contact __init__ then calls superit needs to be able to pass the address-related arguments to the "nextmethodwhich is addressholder __init__ this is problem whenever we want to call superclass methods with the same namebut with different sets of arguments most oftenthe only time you would want to call superclass with completely different set of arguments is in __init__as we're doing here even with regular methodsthoughwe may want to add optional parameters that only make sense to one subclass or set of subclasses sadlythe only way to solve this problem is to plan for it from the beginning we have to design our base class parameter lists to accept keyword arguments for any parameters that are not required by every subclass implementation finallywe must ensure the method freely accepts unexpected arguments and passes them on to its super callin case they are necessary to later methods in the inheritance order