내장 함수 isinstance는 값과 클래스 객체를 받아서 값이 클래스의 인스턴스이면 True를 반환한다.
other가 Time 객체이면 _ _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'