Time 객체에 정수를 더하는 대신 정수에 Time 객체를 더하라고 했지만, 파이썬은 이를 어떻게 처리하는지 알지 못한다는 게 문제다. 그러나 이런 문제에 대한 똑똑한 해법이 있다. 특수 메서드 radd를 사용하는 것이다. radd는 “right-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를 반환해야 한다. 이 Point의 x 좌표는 피연산자들의 x 좌표의 합계이고, y 좌표는 피연산자들의 y 좌표의 합계여야 한다.
- • 두 번째 피연산자가 튜플이면 메서드는 튜플의 첫 번째 원소를 x 좌표, 두 번째 원소를 y 좌표에 더하고 결과로 새로운 Point를 반환해야 한다.