我有一个具有如下属性的类:
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?
编辑:这个可视化让事情变得更加清晰:如果我理解正确的话,字典中存储的不是具有Foo
属性的对象bar
,而是 getter 的返回值。正确的?