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__를 사용하라” 참조).