次のようなプロパティを持つクラスがあります。
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
このように使用すると、プロパティのセッターが呼び出されないのはなぜですか?
編集:この視覚化により、物事はすでにかなり明確になりました。正しく理解すれば、辞書に格納されているのはFoo
プロパティを持つオブジェクトではなくbar
、ゲッターの戻り値です。右?