더북(TheBook)
class Pictures(dict):
    def __missing__(self, key):
        value = open_picture(key)
        self[key] = value
        return value
        
pictures = Pictures()
handle = pictures[path]
handle.seek(0)
image_data = handle.read()

pictures[path]라는 딕셔너리 접근에서 path가 딕셔너리에 없으면 __missing__ 메서드가 호출된다. 이 메서드는 키에 해당하는 디폴트 값을 생성해 딕셔너리에 넣어준 다음에 호출한 쪽에 그 값을 반환해야 한다. 그 이후 딕셔너리에서 같은 경로에 접근하면 이미 해당 원소가 딕셔너리에 들어 있으므로 __missing__이 호출되지 않는다(__getattr__의 동작과 비슷하다. 아이템 61 “지연 계산 애트리뷰트가 필요하면 __getattr__, __getattribute__, __setattr__를 사용하라” 참조).