본문 바로가기
파이썬

파이썬 Python의 새 스타일 속성으로 '속성을 설정할 수 없습니다'

by º기록 2020. 10. 24.
반응형

새로운 스타일의 속성 선언을 사용하려고합니다.

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

 

 

반응형

댓글