더북(TheBook)

15.5 객체는 가변이다

객체의 속성에 할당을 해서 객체의 상태를 바꿀 수 있다. 예를 들어 위치를 변경하지 않고 직사각형의 크기를 변경하기 위해 widthheight의 값을 수정할 수 있다.

box.width = box.width + 50

box.height = box.height + 100

객체를 수정하는 함수도 작성할 수 있다. 예를 들어 grow_rectangleRectangle 객체, 두 숫자 dwidthdheight를 받아서 인수로 받은 직사각형의 너비와 높이에 숫자를 더한다.

def grow_rectangle(rect, dwidth, dheight):

rect.width += dwidth

rect.height += dheight

어떤 일이 일어났는지 예제로 살펴보자.

>>> box.width, box.height

(150.0, 300.0)

>>> grow_rectangle(box, 50, 100)

>>> box.width, box.height

(200.0, 400.0)

grow_rectangle 함수 안에서 rectbox의 별칭이므로 함수에서 rect를 수정하면 box가 변경된다.

연습삼아 Rectangle과 두 숫자 dx, dy를 받는 move_rectangle 함수를 작성하라. 이 함수는 cornerx 좌표에 dx를 더하고, y 좌표에 dy를 더해서 직사각형의 위치를 변경해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.