Hi. In this video we'll be discussing multiple inheritance, multi level inheritance and method resolution order. This is the extension of the inheritance in Python that we discussed in our last video. And I hope this is going to further enhance your learning and create a better understanding of how inheritance works within Python. So let's begin. Number one is multiple inheritance in Python.
Now, as we discussed inheritance in the last video, just repeating that inheritance is getting something from someone else. So here we are actually getting something from different people. Or for example, if we're talking about within Python, then the child class gets inheritance from projects. My father and mother both let's take the 80 let's look at this in the form of example or the diagram. See, the DR class gets inheritance of attributes from the base class one and the base class two. So, when we access when we create a drive class, we pass base class base one and base two both into this third class that is multi derived class and it gets all the attributes of base one and base base two in this multi derived class.
The syntax is for example, we created an inheritance once class one class and then an inheritance to class. And then we created a third class that is multi inheritance and we we inherited attributes of inheritance, one and eight. inheritance to class in multi inheritance class. here we can also take the example of, for example, we created a class for airplane, we created a class for bus. And then we created a third class that is mode of transportation and that mode of transportation inherited attributes from both parent airplane class and bus class. So I hope now you're getting an idea of what multi level inheritance is.
Now there is another type of an inheritance that is multi level inheritance. So it's, it's a linear scenario. Here, when we created the base class, and then the drive class drive class inherited all the attributes of the base class. And then further we created another drive class inherited all the attributes of drive. Drive class, it was created earlier. So actually, it had inherited all the way attributes of drived one and the base class.
So, this is another level of inheritance. Here we can take example of every person here in this world is an animal, then few of the animals are mammals and among mammals is the humans. So, all humans are derived from mammals and all mammals are derived from animals. So, animal is the base class, then members is the drive class one and humans is the drive class two. In this scenario, there is also method resolution order, what it is how does the drive class access methods and attributes of the parent class or the base class, it has to have a certain resolution order and this is determined through method resolution. In order in Python, let's take the example that we discussed earlier class bird we created, it has an attribute read, it has a deaf in it instance that is that prints bird is ready it has a function of who is this, it has a method actually, of who is this, that Prince bird, and it has a method swim that prints swim faster and then there is a penguin class that has an init method, it has a super function with the init method that gets all the content from the parent class of init parent class init method it has Who is this method.
So, the third is it has run method that prints run faster. So, if we talk about method resolution order, and we create a third class that is both that has the attributes of bird bird class that we just created, and the attribute of penguin class that we just created. So, when we go about instantiating the boat class with OBJ one and then calling the method Who is this what will it print will it print penguin or will it print bird because this both class has the attributes of bird and Penguin. So, the method resolution order tells that it should begin from left to right. And then when we call this function, when we call this method, it will print since the bird was first it will print this bird and if we change it, let's run this first. See the bird is ready.
And the bird bird is ready is printed because it has an init fire method in it. That prints bird is ready. It printed that Then who is this it printed birth. However, if you change the order, if you print penguin and then bird and then again rerun the code now it is printing bird is ready penguin is ready and then penguin because now it is executing this init method that has a super init method within it that calls both the bird is ready the penguin is ready and then who is it then it prints this penguin. I hope now, this is clear that how inheritance working works in Python, multiple inheritance multi level inter inheritance and a few scenarios within that that includes overriding classes super function etc. If you have any questions, feel free to contact me I would be more than happy to answer you.
And if you have any specific topic that you want to learn, feel free to contact. There is a wonderful day ahead for you to apply your learning and move forward. Thank you