반응형
새로운 스타일의 속성 선언을 사용하려고합니다.
class C(object):
def __init__(self):
self._x = 0
@property
def x(self):
print 'getting'
return self._x
@x.setter
def set_x(self, value):
print 'setting'
self._x = value
if __name__ == '__main__':
c = C()
print c.x
c.x = 10
print c.x
콘솔에서 다음을 참조하십시오.
pydev debugger: starting
getting
0
File "\test.py", line 55, in <module>
c.x = 10
AttributeError: can't set attribute
내가 뭘 잘못하고 있죠? 추신 : 구식 선언이 잘 작동합니다.
해결 방법
추가 함수에 원래 속성과 동일한 이름을 지정해야합니다 (이 경우 x).
속성을 반환하는 함수로 property
를 사용하면 원하는대로 메서드를 호출 할 수 있기 때문에 이것이 왜 그런지 모르겠습니다.
따라서 코드를 다음과 같이 변경해야합니다.
@x.setter
def x(self, value):
'setting'
self._x = value
참조 페이지 https://stackoverflow.com/questions/4183432
반응형
'파이썬' 카테고리의 다른 글
파이썬에서 문자열을 utf-8로 변환하는 방법 (0) | 2020.10.24 |
---|---|
파이썬 Python을 사용하여 한 디렉터리에서 다른 디렉터리로 모든 파일 이동 (0) | 2020.10.24 |
파이썬 Python list sort in descending order (0) | 2020.10.24 |
파이썬 ufunc 'add' did not contain loop with signature matching type dtype ('S32') ('S32') ('S32') (0) | 2020.10.24 |
파이썬 내 파이썬 객체가 숫자인지 어떻게 확인할 수 있습니까? (0) | 2020.10.23 |
댓글