더북(TheBook)

4 연산자 오버로딩


연산자 오버로딩(operator overloading)은 클래스 안에서 메서드로 연산자를 새롭게 구현하는 것으로 다형성의 특별한 형태입니다. 연산자 오버로딩을 사용하면 다른 객체나 일반적인 피연산자와 연산을 할 수 있습니다. 정의만 보고 이해하기가 쉽지 않으므로 간단한 예제를 만들어 보겠습니다.

코드 7-16 oop2/oop2_4/point_1.py

class Point:
    def _ _init__(self, x = 0, y = 0):
        self.x = x
        self.y = y

    def set_point(self, x, y):
        self.x = x
        self.y = y

    def get_point(self):
        return self.x, self.y

    def _ _str__(self):
        return '({x}, {y})'.format(x = self.x, y = self.y)

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

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

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