我有一類具有這樣的特性:二傳手屬性的
class Foo(object):
def __init__(self):
self._bar = 'bar'
@property
def bar(self):
return self._bar
@bar.setter
def bar(self, value):
self._bar = value
我實例化類,在字典中使用它,並賦予了新的價值屬性是這樣的:
f = Foo()
d = {'x': f.bar}
d['x'] = 'baz'
print d['x'] # prints baz, as expected
print f.bar # prints bar, not as expected
爲什麼當我以這種方式使用它時,屬性的setter沒有被調用?
編輯:這visualization已經做了很多的事情更清楚:如果我理解正確的,什麼是存儲在字典不是對象Foo
與屬性bar
,但吸氣的返回值。對?
我想解決的問題是:我有一個需要修改屬性的對象列表。我把它們全部放在字典中,以便輕鬆訪問它們。我現在使用了一個簡單的if/else結構,它不那麼簡潔,但是可以工作:-) – BioGeek