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 ...