super(call can be made inside any methodnot just __init__ this means all methods can be modified via overriding and calls to super the call to super can also be made at any point in the methodwe don' have to make the call as the first line in the method for examplewe may need to manipulate or validate incoming parameters before forwarding them to the superclass multiple inheritance multiple inheritance is touchy subject in principleit' very simplea subclass that inherits from more than one parent class is able to access functionality from both of them in practicethis is less useful than it sounds and many expert programmers recommend against using it as rule of thumbif you think you need multiple inheritanceyou're probably wrongbut if you know you need ityou're probably right the simplest and most useful form of multiple inheritance is called mixin mixin is generally superclass that is not meant to exist on its ownbut is meant to be inherited by some other class to provide extra functionality for examplelet' say we wanted to add functionality to our contact class that allows sending an -mail to self email sending -mail is common task that we might want to use on many other classes sowe can write simple mixin class to do the -mailing for usclass mailsenderdef send_mail(selfmessage)print("sending mail to self emailadd -mail logic here for brevitywe won' include the actual -mail logic hereif you're interested in studying how it' donesee the smtplib module in the python standard library this class doesn' do anything special (in factit can barely function as standalone class)but it does allow us to define new class that describes both contact and mailsenderusing multiple inheritanceclass emailablecontact(contactmailsender)pass the syntax for multiple inheritance looks like parameter list in the class definition instead of including one base class inside the parentheseswe include two (or more)separated by comma we can test this new hybrid to see the mixin at worke emailablecontact("john smith""jsmith@example net"