벡터를 더하기 위해 + 오버로딩

매일 공부(ML)·2023년 3월 2일
0

Fluent Python

목록 보기
88/130

객체지향 상용구

연산자 오버로딩: 제대로 하기

벡터를 더하기 위해 + 오버로딩하기

시퀀스의 결합을 위해서 + 연산자를, 시퀀스의 반복을 위ㅐ서는 * 연산자를 지원해야 한다.


v1 = Vector([3,4,5])
v2 = Vector([6,7,8])
v1 + v2

길이가 다른 두 개이 Vector 객체를 더하면, 에러가 생길 수 있으나 정보 검색등에서 활용되는 사례를 보면, 짧은 쪽 벡터의 빈 공간을 0으로 채워서 더하는 것이 낫다.

v1 = Vector[3,4,5,6])
v3 = Vector([1,2])
v1 + v3
#Vector 클래스 내부

def __add__(self, othher):
	pairs = itertools.zip_longest(self, other, fillvalue=0.0)
    return Vector(a + b for a, b in pairs)

profile
성장을 도울 아카이빙 블로그

0개의 댓글