inheriting the constructor if we see from our previous inheritance example__init__ was located in the parent class in the up 'cause the child class dog or cat didn' 've __init__ method in it python used the inheritance attribute lookup to find __init__ in animal class when we created the child classfirst it will look the __init__ method in the dog classthen it didn' find it then looked into parent class animal and found there and called that there so as our class design became complex we may wish to initialize instance firstly processing it through parent class constructor and then through child class constructor output in above exampleall animals have name and all dogs particular breed we called parent class constructor with super so dog has its own __init__ but the first thing that happen is we call super super is built in function and it is designed to relate class to its super class or its parent class in this case we saying that get the super class of dog and pass the dog instance to whatever method we say here the constructor __init__ so in another words we are calling parent class animal __init__ with the dog object you may ask why we won' just say animal __init__ with the dog instancewe could do this but if the name of animal class were to changesometime in the future what if we wanna rearrange the class hierarchy