을 설정하는 코드입니다하지 않습니다 파이썬 속성은 다음
def Property(func):
return property(**func())
class A:
def __init__(self, name):
self._name = name
@Property
def name():
doc = 'A''s name'
def fget(self):
return self._name
def fset(self, val):
self._name = val
fdel = None
print locals()
return locals()
a = A('John')
print a.name
print a._name
a.name = 'Bob'
print a.name
print a._name
위의 다음과 같은 출력을 생성합니다
{'doc': 'As name', 'fset': <function fset at 0x10b68e578>, 'fdel': None, 'fget': <function fget at 0x10b68ec08>}
John
John
Bob
John
코드가 from here를 촬영됩니다.
질문 : 무엇이 잘못 되었나요? 그것은 간단해야하지만 나는 그것을 찾을 수 없습니다.
참고 : 단순히 속성을 숨기는 것이 아니라 복잡한 가져 오기/설정에 대한 속성이 필요합니다.
미리 감사드립니다.
당신이 fset'이'name' 대신'_name'의 설정하지 않는 '것을 100 % 특정 있습니까? 쉽게 실수를하고, 증상을 설명 할 것입니다. –
@MartijnPieters 99.9 %이 코드로 생성 된 코드와 출력을 복사했습니다.) – tonytony
@property def를 사용하는 대신이 속성을 정의하는 이상한 방법 이름 (...) : "docstr"\ n getter','@name.setter def name (...) : setter'? – delnan