15.5: Objects are mutable
- Page ID
- 40819
You can change the state of an object by making an assignment to one of its attributes. For example, to change the size of a rectangle without changing its position, you can modify the values of width
and height
:
box.width = box.width + 50 box.height = box.height + 100
You can also write functions that modify objects. For example, grow_rectangle
takes a Rectangle object and two numbers, dwidth
and dheight
, and adds the numbers to the width and height of the rectangle:
def grow_rectangle(rect, dwidth, dheight): rect.width += dwidth rect.height += dheight
Here is an example that demonstrates the effect:
>>> box.width, box.height (150.0, 300.0) >>> grow_rectangle(box, 50, 100) >>> box.width, box.height (200.0, 400.0)
Inside the function, rect
is an alias for box
, so when the function modifies rect
, box
changes.
As an exercise, write a function named move_rectangle
that takes a Rectangle and two numbers named dx
and dy
. It should change the location of the rectangle by adding dx
to the x
coordinate of corner
and adding dy
to the y
coordinate of corner
.