import math
class Shape(object):        
    def __init__(self,base,side):
        self.base=base
        self.side=side
    def area(self):
        return self.base*self.side

    def perimeter(self):
        return 2*(self.base+self.side)
    def __str__(self):
        return 'I am a %s with area of %d' % (type(self).__name__, self.area())

class Rectangle(Shape):     
    def __init__(self, base, side):
        super(Rectangle, self).__init__(base,side)

class Square(Shape):       
    def __init__(self, base):
        super(Square, self).__init__(base,base)
d1=Rectangle(4,5)
d2=Square(4)
print(d1.area())
print(d2.area())