The package / module should be set up so that classes MUST implement this method; this could be done using the ABC module, and something like a parent object "Object" or something. Haven't thought about this too much. But say someone wants to extend your work; they shouldn't be able to create a new subclass of Shape, for example, without defining this method.