# # Like shape7 Java example, uses inheritance; # but also our Shape has constructor and args # # # Definition of superclass Shape # class Shape: def __init__ (self, xin, yin): self._x = xin self._y = yin def setPos (self, xin, yin): self._x = xin self._y = yin # # Definition of class Rect # class Rect (Shape): # Constructor def __init__ (self, xin, yin, widin, htin): # Must call our superclass' constructor first Shape.__init__ (self, xin, yin) self._wid = widin self._ht = htin def setSize (self, widin, htin): self._wid = widin self._ht = htin def draw (self): print ("Drawing rectangle at " + " " + str(self._x) + " " + str(self._y) + " " + str(self._wid) + " " + str(self._ht)) def area (self): return self._wid * self._ht # # Definition of class Circle # class Circle (Shape): def __init__ (self, xin, yin, radin): Shape.__init__(self, xin, yin) self._rad = radin def setSize (self, radin): self._rad = radin def draw (self): print ("Drawing circle at " + " " + str(self._x) + " " + str(self._y) + " " + str(self._rad)) def area (self): return self._rad * self._rad * 3.14159 # # A main program for testing our objects # (identical to the one in shape6.py) # # Instantiate and initialize the objects r1 = Rect (10, 10, 50, 50) r2 = Rect (80, 10, 10, 100) c1 = Circle (35, 90, 10) # "Draw" them r1.draw() r2.draw() c1.draw() # Compute and print total area print ("Total area = " + str(r1.area() + r2.area() + c1.area()))