더북(TheBook)

내장 함수 isinstance는 값과 클래스 객체를 받아서 값이 클래스의 인스턴스이면 True를 반환한다.

otherTime 객체이면 _ _add_ _add_time을 호출한다. 그렇지 않을 땐 인자가 숫자라 가정하고 increment를 호출한다. 인수의 타입에 따라 다른 메서드의 계산을 가져오기 때문에 이러한 연산을 타입 기반 디스패치(type-based dispatch)라고 한다.

다음은 다른 타입에 + 연산자를 사용하는 예제다.

>>> start = Time(9, 45)

>>> duration = Time(1, 35)

>>> print(start + duration)

11:20:00

>>> print(start + 1337)

10:07:17

불행히도 이와 같은 덧셈 구현은 교환되지 않는다. 정수가 첫 번째 피연산자이면 다음 같은 결과를 얻게 된다.

>>> print(1337 + start)

TypeError: unsupported operand type(s) for +: 'int' and 'instance'

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