
624
3
부
클래스와 프로토콜
15
.
7
변이성
NOTE
다른 언어에서 제네릭을 다뤄본 경험이 적다면 이번 절은 이 책에서 가장 어려운 부분이 될 수도 있
다. 변이성은 추상적인 개념으로서, 엄격히 정의를 내리면 이 절이 수학책처럼 보일 것이다.
사실 변이성은 주로 새로운 제네릭 컨테이너형을 지원하거나 콜백 기반의
API
를 제공해야 하는 라이브러리
개발자들과 관련이 있다. 라이브러리를 개발할 때도 불변성만 지원함으로써 너무 복잡해지는 것을 피할 수
있다. 사실 파이썬 표준 라이브러리는 대체로 불변성만 지원한다. 이 책을 처음 읽는다면, 이 절 전체를 넘어
가거나 불변성 부분만 읽고 넘어가도 좋다.
변이성
variance
개념은 매개변수화된 제네릭
Callable
형에 적용하면서
8
.
5
.
11
절의 ‘콜러블형의
변이’에서 처음 접했다. 여기서는 ‘실세계’에 비유해 추상적인 개념을 조금 더 구체화시키면서
이 개념을 확장해 제네릭 컬렉션형을 설명한다.
예를 들어 학교 구내식당에 주스 디스펜서를 하나만 설치할 수 있다는 규정이 있다고 생각해
보자. 범용 음료 디스펜서는 설치할 수 없다.
16
범용 디스펜서는 탄산음료도 제공할 수 있는데,
학교 이사회에서 탄산음료를 금지했기 때문이다.
17
15
.
7
.
1
불변적 디스펜서
음료수 종류를 매개변수화한 제네릭
BeverageDispenser ...