Hi, a = b = c
as an assignment doesn't return anything, i ruled out a = b = c as chained assignment, like a = (b = c) SO i thought, a = b = c is resolved as a, b = [c, c] at-least i fixed in my mind that every assignment like operation in python is done with references and then the references are binded to the named variables. like globals()['a'] = result() but today i learned that this is not the case with great pain(7 hours of debugging.) class Mytest(object): def __init__(self, a): self.a = a def __getitem__(self, k): print('__getitem__', k) return self.a[k] def __setitem__(self, k, v): print('__setitem__', k, v) self.a[k] = v roots = Mytest([0, 1, 2, 3, 4, 5, 6, 7, 8]) a = 4 roots[4] = 6 a = roots[a] = roots[roots[a]] the above program's output is __setitem__ 4 6 __getitem__ 4 __getitem__ 6 __setitem__ 6 6 But the output that i expected is __setitem__ 4 6 __getitem__ 4 __getitem__ 6 __setitem__ 4 6 SO isn't it counter intuitive from all other python operations. like how we teach on how python performs a swap operation??? I just want to get a better idea around this. -- Regards Srinivas Devaki Junior (3rd yr) student at Indian School of Mines,(IIT Dhanbad) Computer Science and Engineering Department ph: +91 9491 383 249 telegram_id: @eightnoteight -- https://mail.python.org/mailman/listinfo/python-list