"""Inheritance in python - interfaces """ # An interface is the set of methods that a class provides. # Many programming languages provide formal ways for a superclass to enforce # an interface that any subclass needs to provide. # Python doesn't provide such a mechanism, but below you will find an example # that shows how a base class can provide a set of "recommended" methods # for a subclass to provide. # Our Shape class does that by defining method "stubs" that raise an exception # if an implementation is not provided in a subclass. # assume the Point object was defined in a module called shapes_inheritance from shapes_inheritance import Point class Shape (object) : def __init__(self, x=0, y=0) : """creates an instance of a Shape with a location given by x and y""" self.location = Point(x, y) def move(self, x, y) : """move a shape object to a location given by x and y""" self.location = Point(x, y) def distance_to_origin(self) : return self.location.distance_to_origin() def distance(other) : return self.location.distance(other.location) def duplicate(self) : """returns a duplicate of a shape""" raise NotImplemented def area(self) : """returns the area of a shape""" raise NotImplemented def perimeter(self) : """returns the perimiter of a shape""" raise NotImplemented def scale(self, s) : """rescale the size of a shape by the given amount""" raise NotImplemented def __repr__(self) : return "A shape located at: " + str(self.location)