556
3
부
클래스와 프로토콜
●
수치형 정적 프로토콜
SupportsComplex
,
SupportsFloat
등은 정적 타이핑에 잘 작동하지만, 복소
수를 사용할 때는 런타임 자료형 검사를 믿을 수 없다.
이제 이 장에서 배운 내용을 간단히 정리할 때가 되었다.
13
.
7
요약
타이핑 맵 (그림
13
-
1
)은 이 장을 이해하는 핵심이다. 타이핑의 네 가지 방법을 알아본 후, 덕
타이핑을 지원하는 동적 프로토콜과 정적 덕 타이핑을 지원하는 정적 프로토콜을 비교해 설명
했다. 두 프로토콜 모두 클래스가 어떤 특정한 프로토콜을 지원한다고 명시적으로 선언하는 것
을 요구하지 않는다. 클래스는 그저 필요한 메서드를 구현함으로써 프로토콜을 지원한다.
13
.
4
절 ‘덕 타이핑’에서는 파이썬 인터프리터가 시퀀스 및 반복형 동적 프로토콜이 작동하도록
어느 정도의 일을 하는지 알아보고, 코드 일부도 살펴보았다. 그러고 나서 멍키 패칭으로 메서
드를 추가함으로써 런타임에 클래스가 프로토콜을 구현하는 방법도 알아보았다. 덕 타이핑 뒷
부분에서는
try
/
except
와 조기 실패를 이용해
isinstance( )
나
hasattr( )
로 검사하지 않
고 구조적으로 자료형을 알아내는 방법과 함께 방어적 프로그래밍의 맛을 보았다.
‘물새와
ABC
’ 글상자에서 알렉스 마르텔리가 구스 타이핑을 소개한 후, 기존
ABC
를 상속하는
방법을 설명하고, 표준 라이브러리에서 중요한
ABC
들을 살펴보고,
ABC
를 새로 만들어 전통
적인 상속과 등록을 적용해 보았다. 이 절의 마지막에서는