더북(TheBook)

Time 객체에 정수를 더하는 대신 정수에 Time 객체를 더하라고 했지만, 파이썬은 이를 어떻게 처리하는지 알지 못한다는 게 문제다. 그러나 이런 문제에 대한 똑똑한 해법이 있다. 특수 메서드 radd를 사용하는 것이다. raddright-side add(오른쪽부터 더하기)를 뜻한다. radd 메서드는 Time 객체가 + 연산자의 오른쪽에 있을 때 호출된다. 정의는 다음과 같다.

# class Time: 정의 안쪽

 

def _ _radd_ _(self, other):

return self._ _add_ _(other)

이제 다음과 같이 사용한다.

>>> print(1337 + start)

10:07:17

연습삼아 Point에 대해 Point 객체나 튜플과 동작하는 add 메서드를 작성하라.

  • 두 번째 피연산자가 Point이면 메서드는 새로운 Point를 반환해야 한다. 이 Pointx 좌표는 피연산자들의 x 좌표의 합계이고, y 좌표는 피연산자들의 y 좌표의 합계여야 한다.
  • 두 번째 피연산자가 튜플이면 메서드는 튜플의 첫 번째 원소를 x 좌표, 두 번째 원소를 y 좌표에 더하고 결과로 새로운 Point를 반환해야 한다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.