class A():
# A not inherit from object
pass
a = A()
print 'a.__dict__ : ', a.__dict__ # {}
print 'dir(a) : ', dir(a) # ['__doc__', '__module__']
print 'dir(A) : ', dir(A) # ['__doc__', '__module__']
1.First 질문은, a.__dict__
'는이'__dict__
속성이 있음을 증명하지만, 디렉토리 후 (a) 또는 디렉토리 (A), __dict__
를 찾을 수없는 곳 ATTR __dict__
입니다 ?파이썬 내장 속성이 __dict__에 대한 혼란과 __setattr__
# next i tried to give the 'a' attribute 'test' whose value is 1 in 3 diff ways
a.test = 1 # fine!
setattr(a, 'test', 1) # it works!
a.__setattr__('test', 1) # Attribute Error raised,'a' has no attr __setattr__
2.As 나는 a.test = 1
과 setattr(a, 'test', 1)
실제로 속성을 설정하는 __setattr__
메소드를 호출 알고 test
나누었다 디렉토리에는 __setattr__
(a)는 저놈이 어떻게 할 이제 왜? a.__setattr__
인상 오류가 없다가 a.test
및 setattr(a, 'test', 1)
어떤 조언과 제안을 주시면 감사하겠습니다. 특히 두 번째 질문에 감사드립니다.
'setattr' 메소드가 instancemethod'__setattr__'을 줄 수 있다고 생각하십니까? – LeoTao
[documentation] (https://docs.python.org/2/library/functions.html#dir)을 읽으셨습니까? 특히 * "엄격하게 정의 된 이름 집합을 제공하려고 시도하는 것보다 더 재미있는 이름 집합을 제공하려고합니다."*. – jonrsharpe
__ doc__ 및 __ module__은 .__ dict__에 포함되지 않고 .__ dict__에 포함됩니다. – mdurant