더북(TheBook)

p1 객체와 숫자의 덧셈을 시도했는데(#3) 이번에는 순서가 다릅니다. 숫자가 앞에 위치했습니다. 이 코드도 __add__() 메서드를 호출하는데 연산이 잘 될까요?


실행결과 Traceback (most recent call last):
   File "F:\source_code\oop2\oop2_3\point_2.py", line 27, in <module>
     p2 = 3 + p1                            #3
TypeError: unsupported operand type(s) for +: 'int' and 'Point'</>


이전과 같은 오류가 발생합니다. intPoint는 순서만 달라졌을 뿐입니다. 이 문제를 해결하고자 연산자 오버로딩을 하나 더 하겠습니다.

코드 7-19 oop2/oop2_4/point_3.py

class Point:
    (중략)

    def _ _radd__(self, n):    #1
        x = self.x + n
        y = self.y + n
        return Point(x, y)

if __name__= ="__main__":
    p1 = Point(2, 2)
    p2 = 3 + p1                 #2
    print(p2)

실행결과 (5, 5)

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