[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.이는 인터프리터가 클래스 레벨 속성 및 메소드의 키가 문자열 일 수 있음을 보장합니다.
이는 인터프리터가 클래스 레벨 속성 및 메소드의 키가 문자열 일 수 있음을 보장합니다.
다른 곳에서 파이썬은 "동의하는 성인용 언어"입니다. 즉, 객체에 대한 사전이 노출되고 사용자가 변경할 수 있음을 의미합니다. 그러나 클래스에 대한 클래스 수준 특성 및 메서드의 경우 키가 문자열이라는 것을 보장 할 수 있으면 클래스 수준에서 특성 및 메서드 조회에 대한 일반적인 사례 코드를 단순화하고 속도를 높일 수 있습니다. 특히 새 스타일 클래스에 대한 __mro__ 검색 논리는 클래스 dict 키가 문자열이라고 가정하여 단순화되고 속도가 빨라집니다.
from https://stackoverflow.com/questions/32720492/why-is-a-class-dict-a-mappingproxy by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] numpy에서 인접하지 않은 범위를 여러 개 색인으로 만듭니다. (0) | 2018.11.17 |
---|---|
[PYTHON] 파이썬 : 한 사전이 다른 큰 사전의 하위 집합인지 확인하십시오 (0) | 2018.11.16 |
[PYTHON] HTML 표를 JSON으로 변환 (0) | 2018.11.16 |
[PYTHON] 파이썬에서 나선형 배열을 만드는가? (0) | 2018.11.16 |
[PYTHON] Django 전환, 코드 블록을위한 언어 전환, 하나의 언어로 번역 수행 (0) | 2018.11.16 |