그래서 파이썬 2.6에서 데코레이터를 가지고 놀고 있는데, 그것들을 작동시키는 데 어려움이 있습니다. 내 수업 파일은 다음과 같습니다.
class testDec:
@property
def x(self):
print 'called getter'
return self._x
@x.setter
def x(self, value):
print 'called setter'
self._x = value
내가 생각한 것은 x
속성처럼 취급 하지만 get 및 set에서 이러한 함수를 호출하는 것입니다. 그래서 유휴 상태를 발생시키고 확인했습니다.
>>> from testDec import testDec
from testDec import testDec
>>> t = testDec()
t = testDec()
>>> t.x
t.x
called getter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "testDec.py", line 18, in x
return self._x
AttributeError: testDec instance has no attribute '_x'
>>> t.x = 5
t.x = 5
>>> t.x
t.x
5
getter를 호출하기 때문에 첫 번째 호출은 예상대로 작동하며 기본값이 없으며 실패합니다. 알았어요, 이해합니다 그러나 할당 호출 t.x = 5
은 새로운 속성을 생성하는 것으로 보이며 x
이제 getter가 작동하지 않습니다!
내가 무엇을 놓치고 있습니까?