The idea is that inheritance is a way to express an "is a" relationship; in the above, Circle is an Ellipse, which is a Shape, thus, transitively, Circle is also a Shape. Implicitly, Shape is an ...
In the code above, Example and Example2 behave exactly the same way. The no-argument super() effectively fills in the class and self. If we take a slightly more complex hierarchy from part 1, we can ...
To quote Bjarne Stroustrup, "Multiple inheritance is like a parachute. Most of the time you don't need it, but when you do need it, you really need it." In the early days of C++, before templates, one ...