Sometimes it is obvious what the attributes of an object should be, but other times you have to make decisions. For examples, imagine you are designing a class to represent rectangles. What attributes would you use to specify the location and size of a rectangle? You can ignore angle; to keep things simple, assume that the rectangle is either vertical or horizontal.
There are at least two possibilities:
- You could specify one corner of the rectangle (or the center), the width, and the height.
- You could specify two opposing corners.
At this point it is hard to say whether either is better than the other, so we’ll implement the first one, just as an example.
import math
class Point:
"""represents a point in 2-D space"""
class Rectangle:
"""represent a rectangle.
attributes: width, height, corner.
corner is a Point object that specifies the lower-left corner.
"""
box = Rectangle()
box.width = 100.0
box.height = 200.0
box.corner = Point()
box.corner.x = 0.0
box.corner.y = 0.0
The figure shows the state of this object:
from Thinking in Python