더북(TheBook)

마찬가지로 이제 각 인스턴스 필드를 대입한 순서가 __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 설계 시 이를 포함시켜도 안전하다(아이템 65 “클래스 본문 정의 순서를 고려해 애트리뷰트 간 관계를 설정하라” 참조).