
Steven D'Aprano wrote:
Peio Borthelle wrote:
a = 2 b = alias("a") a = 'foo' b
'foo'
I have often thought that would be a nice to have feature,
Seems to me it would be a confusing-to-have feature. By now it's deeply embedded in Python programmers' brains that assignment to a bare name can only change which object that name refers to, and can't have any other side effects.
You can always use one level of indirection:
a = [2] b = a a[0] = 'foo' # Not a='foo' b[0] => print 'foo'
Also, if you're willing to use an object attribute rather than a bare name, you can get the same effect using a property. class Switcheroo(object): def get_b(self): return self.a def set_b(self, value): self.a = value b = property(get_b, set_b) s = Switcheroo() s.a = 17 print s.a s.b = 42 print s.a -- Greg