Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 연산자 오버로딩

<시간/>

2차원 벡터를 나타내기 위해 Vector 클래스를 생성했다고 가정하고 더하기 연산자를 사용하여 추가하면 어떻게 됩니까? 파이썬이 당신에게 소리칠 가능성이 높습니다.

그러나 클래스에서 __add__ 메서드를 정의하여 벡터 추가를 수행하면 더하기 연산자가 예상대로 작동합니다 -

#!/usr/bin/python
class Vector:
   def __init__(self, a, b):
      self.a = a
      self.b = b
   def __str__(self):
      return 'Vector (%d, %d)' % (self.a, self.b)
   def __add__(self,other):
      return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2

출력

위의 코드가 실행되면 다음과 같은 결과가 생성됩니다 -

Vector(7,8)