a7_2.py

class Point(object):
	"""Represents a point in 2-D space."""

class Rectangle(object):
	"""Represents a rectangle

	attributes: width, height, corner.
	"""

	def __init__(self, x, y, width, height):
		pt = Point()
		pt.x = x
		pt.y = y
		self.width = width
		self.height = height
		self.corner = pt

	def __str__(self):
		return "(%.3f, %.3f, %.3f, %.3f)" % (
			self.corner.x, self.corner.y, self.width, self.height)

	def shift(self, dx, dy):
		self.corner.x += dx
		self.corner.y += dy

	def offset(self, dx, dy):
		x = self.corner.x + dx
		y = self.corner.y + dy
		return Rectangle(x, y, self.width, self.height)

	def __add__(self, other):
		x = min(self.corner.x, other.corner.x)
		y = min(self.corner.y, other.corner.y)
		mx = max(self.corner.x + self.width, other.corner.x + other.width)
		my = max(self.corner.y + self.height, other.corner.y + other.height)
		width = mx - x
		height = my - y
		return Rectangle(x, y, width, height)

r1 = Rectangle(10, 20, 10, 10)
r2 = Rectangle(20, 50, 15, 20)
print r1 + r2