다시 한 번, 이제 각 인스턴스 필드를 대입한 순서가 __dict__에 반영될 것이라고 예상할 수 있다.
class MyClass: def __init__(self): self.alligator = 'hatchling' self.elephant = 'calf' a = MyClass() for key, value in a.__dict__.items(): print(f'{key} = {value}') >>> alligator = hatchling elephant = calf
딕셔너리가 삽입 순서를 유지하는 방식은 이제 파이썬 언어 명세의 일부가 됐다. 따라서 앞에서 보여준 언어 기능은 코드에서 항상 이런 식으로 동작한다고 가정해도 안전하며, 여러분이 설계할 API의 일부분으로 이런 동작을 포함시켜도 안전하다.
Note ≡
오랫동안 collections 내장 모듈에는 삽입 순서를 유지해주는 OrderedDict라는 클래스가 있었다. 이 클래스의 동작이 (파이썬 3.7 이후) 표준 dict의 동작과 비슷하기는 하지만, OrderedDict의 성능 특성은 dict와 많이 다르다. 여러분이 키 삽입과 popitem 호출을 매우 자주 처리해야 한다면(예: 최소 최근 사용(least-recently-used) 캐시 구현) 표준 파이썬 dict보다 OrderedDict가 더 낫다(Better way 70: ‘최적화하기 전에 프로파일링을 하라’에서 어떻게 이를 확인할 수 있는지 살펴보라).