num_sub_calls def call_me(self)leftsubclass call_me(selfrightsubclass call_me(selfprint("calling method on subclass"self num_sub_calls + this example simply ensures that each overridden call_me method directly calls the parent method with the same name it lets us know each time method is called by printing the information to the screen it also updates static variable on the class to show how many times it has been called if we instantiate one subclass object and call the method on it oncewe get this outputs subclass( call_me(calling method on base class calling method on left subclass calling method on base class calling method on right subclass calling method on subclass prints num_sub_callss num_left_callss num_right_callss num_base_calls thus we can clearly see the base class' call_me method being called twice this could lead to some insidious bugs if that method is doing actual work--like depositing into bank account--twice the thing to keep in mind with multiple inheritance is that we only want to call the "nextmethod in the class hierarchynot the "parentmethod in factthat next method may not be on parent or ancestor of the current class the super keyword comes to our rescue once again indeedsuper was originally developed to make complicated forms of multiple inheritance possible here is the same code written using superclass baseclassnum_base_calls def call_me(self)