2012-05-04 2 views
0

Python에서 객체의 많은 "특수"속성은 __doc__, __module__ (실험에서 볼 수있는 것)과 같은 __dict__ 사전에 저장됩니다.__dict__에 어떤 속성이 저장되어 있지 않은 이유는 무엇입니까?

그러나 일부는 __class__과 같지 않습니다. 제 질문은 정확히 어떤 속성이 __dict__에 저장되어 있지 않은지 (어딘가에 문서화되어 있습니까?) 왜 그렇지 않은 것입니까?

+1

아마도 이것은 유용 할 수 있습니다. 속성 해결에 관한 장 : http://www.cafepy.com/article/python_attributes_and_methods/ch01.html – snies

+0

기사 주셔서 감사합니다. – Flavien

답변

3

당신이 말하는 내용에 따라 달라집니다. __dict__ 파이썬은 인스턴스를 확인한 다음 클래스를 검사하고 부모 클래스를 부모 클래스로 지정하고 여러 상속을 무시하는 메서드 확인 순서를 사용합니다.

그래서 __class__은 다음과 같습니다. object.__dict__에 있습니다. 따라서 모든 클래스에 대해 정의 된 이유는 object에서 상속됩니다.

+0

그래서 예외없이 모든 속성이 어딘가에 사전에 있다고 말하는 것입니까? 그리고 object .__ dict__는 호출 된 타입에 따라 적절한 값을 반환합니다 (클래스를 생성 할 때까지 볼 수 없기 때문에 오버 라이딩되지 않기 때문입니다). – Flavien

+0

물론 - ['__slots__'] (http://docs.python.org/reference/datamodel.html#slots)도 있고'object .__ dict__'는 단지 사전 일뿐입니다. 모든 객체에 대해 올바른 (기본값) 결과를 생성하도록 설계되었습니다. –

관련 문제