__radd__() 메서드를 구현했습니다(#1). 내부 구현은 __add__() 메서드와 같습니다. 이렇게 구현하면 p2 = 3 + p1 코드를 만나는 순간(#2) 3 + p1을 p1.__radd__(3)으로 변경합니다. 실행 결과를 보면 연산이 잘 되었습니다.
파이썬은 산술 연산자와 논리 연산자를 비롯해 다양한 연산자 오버로딩 메서드를 제공합니다. 이 책에서는 산술 연산자만 알아보겠습니다. 나머지 메서드는 파이썬 문법 책을 참고하기 바랍니다.
표 7-1 산술 연산자 오버로딩 메서드
메서드 |
연산자 |
__add__(self, other) |
+ |
__sub__(self, other) |
- |
__mul__(self, other) |
* |
__truediv__(self, other) |
/ |
__floordiv__(self, other) |
// |
연산자 오버로딩을 할 때는 오버로딩하는 연산자에 의한 연산을 직관적으로 이해할 수 있어야 한다는 점을 주의하세요. 예를 들어 __add__() 메서드를 사용해 연산자 오버로딩을 했는데 함수 내부에서 뺄셈을 구현했다면 이상하겠지요.