2017-10-05 2 views
2
<attribute 'xxx' of 'C' objects>에서

``C '__ objects '>의`<attribute'xxx '>는`C .__ dict__`의 결과에서 무엇을 의미합니까?

>>> class C: 
...  pass 
... 
>>> C.__dict__ 
mappingproxy({'__doc__': None, 
'__weakref__': <attribute '__weakref__' of 'C' objects>, 
'__dict__': <attribute '__dict__' of 'C' objects>, 
'__module__': '__main__'}) 
,

  • C'C' objects 평균 인스턴스를합니까?
  • <attribute 'xxx' of 'C' objects> 평균 xxxC의 인스턴스 속성입니까? 그러나 C.__dict__에 의해 나열된 속성은 C입니다. 다른 사람이하는 동안

<attribute 'xxx' of 'C' objects>으로 언급되지 C의 일부 속성 (예를 들어, __doc____module__)이 있습니까?


재 :

<attribute ..>가 다음 예에 표시되지 않습니다 : "참고 <attribute ..>는 기본적으로 이러한 기술자의에 repr입니다"?

>>> class md: 
...  def __get__(self, obj, owner): 
...   return 3 
... 

>>> class CC: 
...  d=md() 
... 
>>> CC.__dict__ 
mappingproxy({'d': <__main__.md object at 0x7f7387f8c978>, ...}) 
+0

이 질문은'C .__ class __.__ dict__'의 출력을 고려할 때 더욱 흥미 롭습니다. – Guillaume

+1

나는 @Tim이 자주 질문에 대한 인사말을 추가한다는 것을 알았습니다. 누군가가 직접 대면 할 때 정중하게 생각하는 것은 확실하지만 스택 오버플로의 게시물에만 노이즈가 추가됩니다. [_ 내 동료의 질문에 감사를 표하는 이유는 무엇입니까? _] (https://meta.stackoverflow.com/questions/328379/why-are-fellow-users-removing-thank-yous-from-my- 질문). –

답변

3

이 클래스의 인스턴스 C 특성 (C 구현 디스크립터) 계산 PyGetSetDescrObjects이다. 당신이 이들에 대해 조금 이야기 tp_getset in the C-API 좀 걸릴 수 있습니다, Documentation on these은 최소 (또는 내가 :-)를 찾을 수가 없어,하지만 :

struct PyGetSetDef* PyTypeObject.tp_getset

정적에 대한 옵션 포인터 NULL로 종결 된 PyGetSetDef 구조체 배열 이 유형의 인스턴스의 계산 된 특성을 선언합니다.

배열의 각 항목에 대해 항목이 getset 설명자를 포함하는 유형 사전 (아래 tp_dict 참조)에 추가됩니다.<attribute ..>이없는

개체

(참고 : <attribute ..>는 기본적으로 이러한 기술자의 repr입니다)는 __doc____module__이의 이름을 보유하는 동안 정의되지 않은 경우 일반적으로 문자열이나 None입니다 (간단하게 설명하지 않습니다 클래스가 정의 된 모듈).


재 :

<attribute ..>가 다음 예에 표시되지 않습니다

: "참고 <attribute ..>는 기본적으로 이러한 기술자의에 repr입니다"?

내가 놓친이 업데이트를 해결합니다.

이것은 파이썬에서 구현 된 설명 자이며 기본값이 reprobject에서 상속되기 때문입니다.

C에 구현 된 PyGetSetDescrObject의의 repr 기능은 주로 (I 가정 것)와 구별하기 위해, 다른 repr 사용합니다.

+0

감사합니다. "note :''는 기본적으로이 디스크립터들을 repr하는 것이다." 내 게시물을 업데이트 한 예로 ''이 표시되지 않는 이유는 무엇입니까? – Tim

+0

@Tim 방금 업데이트를 발견했습니다. 죄송합니다. 질문에 대한 답변을 업데이트했습니다. –

관련 문제