this sort of polymorphism in python is typically referred to as duck typing"if it walks like duck or swims like duckit' duckwe don' care if it really is duck (inheritance)only that it swims or walks geese and swans might easily be able to provide the duck-like behavior we are looking for this allows future designers to create new types of birds without actually specifying an inheritance hierarchy for aquatic birds it also allows them to create completely different drop-in behaviors that the original designers never planned for for examplefuture designers might be able to make walkingswimming penguin that works with the same interface without ever suggesting that penguins are ducks multiple inheritance when we think of inheritance in our own family treewe can see that we inherit features from more than just one parent when strangers tell proud mother that her son has"his fathers eyes"she will typically respond along the lines of"yesbut he got my nose object-oriented design can also feature such multiple inheritancewhich allows subclass to inherit functionality from multiple parent classes in practicemultiple inheritance can be tricky businessand some programming languages (most notablyjavastrictly prohibit it howevermultiple inheritance can have its uses most oftenit can be used to create objects that have two distinct sets of behaviors for examplean object designed to connect to scanner and send fax of the scanned document might be created by inheriting from two separate scanner and faxer objects as long as two classes have distinct interfacesit is not normally harmful for subclass to inherit from both of them howeverit gets messy if we inherit from two classes that provide overlapping interfaces for exampleif we have motorcycle class that has move methodand boat class also featuring move methodand we want to merge them into the ultimate amphibious vehiclehow does the resulting class know what to do when we call moveat the design levelthis needs to be explainedand at the implementation leveleach programming language has different ways of deciding which parent class' method is calledor in what order oftenthe best way to deal with it is to avoid it if you have design showing up like thisyou're probably doing it wrong take step backanalyze the system againand see if you can remove the multiple inheritance relationship in favor of some other association or composite design