복붙노트

[PYTHON] 왜 클래스 __dict__는 mappingproxy입니까?

PYTHON

왜 클래스 __dict__는 mappingproxy입니까?

왜 __dict__ 클래스가 mappingproxy인지 궁금하지만, __dict__ 인스턴스는 단순한 dict 일뿐입니다.

>>> class A:
...     pass

>>> a = A()
>>> type(a.__dict__)
<class 'dict'>
>>> type(A.__dict__)
<class 'mappingproxy'>

해결법

  1. ==============================

    1.이는 인터프리터가 클래스 레벨 속성 및 메소드의 키가 문자열 일 수 있음을 보장합니다.

    이는 인터프리터가 클래스 레벨 속성 및 메소드의 키가 문자열 일 수 있음을 보장합니다.

    다른 곳에서 파이썬은 "동의하는 성인용 언어"입니다. 즉, 객체에 대한 사전이 노출되고 사용자가 변경할 수 있음을 의미합니다. 그러나 클래스에 대한 클래스 수준 특성 및 메서드의 경우 키가 문자열이라는 것을 보장 할 수 있으면 클래스 수준에서 특성 및 메서드 조회에 대한 일반적인 사례 코드를 단순화하고 속도를 높일 수 있습니다. 특히 새 스타일 클래스에 대한 __mro__ 검색 논리는 클래스 dict 키가 문자열이라고 가정하여 단순화되고 속도가 빨라집니다.

  2. from https://stackoverflow.com/questions/32720492/why-is-a-class-dict-a-mappingproxy by cc-by-sa and MIT license