저는 파이썬 초보자이며 @property 및 @property에 갇혀 있습니다. 세터 데코레이터. 세터를 사용하여 __content라는 사전에 데이터를 추가하고 싶습니다. 이것은 내 시도이지만이 스크립트를 실행하면 마지막 요소 만 사전에 추가됩니다! 그래서 나는 무엇을 여기에서 놓치고있다!파이썬 속성 및 파이썬 속성 설정자 유형 수정
class Something:
def __init__(self,elem):
self.__content={}
self.__content.update(elem)
print type(self.__content)
@property
def content(self):
return self.__content
@content.setter
def content(self,elem):
self.__content.update(elem)
그리고
from transpose import Something
c=Something(dict(one=4))
print c.content
c.content=dict(two=6)
print c.content
결과
/usr/bin/python /home/radouani/PycharmProjects/demoPython/test.py
<type 'dict'>
{'one': 4}
<type 'dict'>
{'two': 6}
Process finished with exit code 0
또 다른 문제 : 내가 가진 튜플 또는 정수에 영향을하려고 할 때 파이썬은 __content의 유형을 변경 왜 이해가 안 돼요 세터 사용?
정중하게
, 당신은'object' IE'클래스 뭔가 (객체)'에서 상속해야합니다 - Python3이 자동으로 수행됩니다 . – sytech
Thaks 많이 작동합니다 :)하지만 무엇이 문제입니까? 왜 상속이 명백하지 않은가? –
Python3에서, 이것은 당신을 위해 일어날 것입니다 - Python3의 모든 클래스는 "새로운 스타일"클래스입니다. "New Style"클래스는 Python2로 다시 포팅되었지만 "old style"클래스의 기능이 변경 되었기 때문에 Python2에서 새로운 스타일 클래스를 사용하도록 '옵트 인 (opt-in)'해야합니다. 파이썬 3에서는 하위 호환성을 위해이 상속을 명시 적으로 수행하는 것이 여전히 바람직하지만 필수는 아닙니다. 그 질문에 대답합니까? – sytech