of its computation since the circle class does not provide an implementation of the distance_from_origin(methodthe one provided by the point base class will be found and used contrast this with the reimplementation of the __eq__(method this method compares this circle' radius with the other circle' radiusand if they are equal it then explicitly calls the base class' __eq__(method using super(if we did not use super(we would have infinite recursionsince circle __eq__(would then just keep calling itself notice also that we don' have to pass the self argument in the super(calls since python automatically passes it for us here are couple of usage examplesp shape point( shape circle( distance_from_origin( distance_from_origin(returns returns we can call the distance_from_origin(method on point or on circlesince circles can stand in for points polymorphism means that any object of given class can be used as though it were an object of any of its class' base classes this is why when we create subclass we need to implement only the additional methods we require and have to reimplement only those existing methods we want to replace and when reimplementing methodswe can use the base class' implementation if necessary by using super(inside the reimplementation in the circle' case we have implemented additional methodssuch as area(and circumference()and reimplemented methods we needed to change the reimplementations of __repr__(and __str__(are necessary because without them the base class methods will be used and the strings returned will be of points instead of circles the reimplementations of __init__(and __eq__(are necessary because we must account for the fact that circles have an additional attributeand in both cases we make use of the base class implementations of the methods to minimize the work we must do shallow and deep copying the point and circle classes are as complete as we need them to be we could provide additional methodssuch as other comparison special methods if we wanted to be able to order points or circles another thing that we might want to do for which no method is provided is to copy point or circle most python classes don' provide copy(method (exceptions being dict copy(and set copy()if we want to copy point or circle we can easily do so by importing the copy module and using the copy copy(function (there is no need to use copy deepcopy(for point and circle objects since they contain only immutable instance variables