In article <[EMAIL PROTECTED]>,
 "Mapisto" <[EMAIL PROTECTED]> wrote:

> I've noticed that if I initialize list of integers in the next manner:
> 
> >>> my_list = [0] * 30
> 
> It works just fine, even if I'll try to assign one element:
> 
> >>> id( my_list[4] )
> 10900116
> >>> id( my_list[6] )
> 10900116
> >>> my_list[4] = 6
> >>> id( my_list[4] )
> 10900044
> >>> id( my_list[6] )
> 10900116
> 
> 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.

Not at all.  If you do the same thing,
  class C:
    pass
  c = C()
  a = [c]*12

... etc., you should observe the same pattern with respect to
object identities.  Mutability doesn't really play any role here.

> Is there a way to bypass it (or perhaps to write a self-defined
> immutable object)?

Bypass what?  What do you need?

   Donn Cave, [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to