> The change in the poision occurs becouse int() is an immutable object. > > if I will do the same with a user-defined object, This reference > manipulating will not happen. So, every entry in the array will refer > to the same instance. > > Is there a way to bypass it (or perhaps to write a self-defined > immutable object)?
This has nothing to do with int being mutable or not. It only has to do with _list_ being mutable, and of course teh semantics of the _ * _ : list x int -> list operator, which simply shallow copies the list. So assigning to some l[i] will replace that entry - regardless of what is stored there. And that is all you do. The mutablity of an object only comes into place if you try and do l[i].some_mutating_op() That catches many people by surprise - but you don't do such a thing :) And besides: making an object immutable would mean that the only way to create an instance would be the constructor - rendering the purpose of the whole exercise somewhat moot - as then you'd have to call the constructor individually for each index you want to alter anyway. Which you have to do in the case of mutable objects, too. So - no gain there. Regards, Diez -- http://mail.python.org/mailman/listinfo/python-list