class Rectangle(object):
def __init__(self, width, height):
self.width = width
self.height = height
@property
def perimeter(self):
return 2 * (self.width + self.height)
@property
def square(self):
return self.width * self.height
def set_width(self, value):
self.width = value
def set_height(self, value):
self.height = value
class Square(Rectangle):
def __init__(self, a):
super(Square, self).__init__(a, a)
def set_side(self, value):
self.width = value
self.height = value
set_width = set_side
set_height = set_side
if __name__ == '__main__':
rec = Rectangle(1, 2)
print 'rec perimeter:', rec.perimeter
print 'rec square:', rec.square
rec.set_width(3)
print 'rec perimeter:', rec.perimeter
print 'rec square:', rec.square
rec.set_width(5)
assert rec.square == 10
rec.set_height(10)
rec.set_width(20)
assert rec.square == 200
sq = Square(2)
print 'square perimeter:', sq.perimeter
print 'square sqare:', sq.square
sq.set_width(1)
assert sq.square == 1
sq.set_width(30)
assert sq.square == 900
sq.set_height(10)
sq.set_width(20)
assert sq.square == 400