2012/1/17 Diego Barrera <diegonebarr...@yahoo.it>: > Chiaramente ho risolto, ma perche' si comporta cosi'?
E' l'unico comportamento sensato e che ci si puo' attendere. a = b = Foo() In questo caso a e b sono due diversi modi di accedere allo stesso oggetto. Quando hai scritto quell'istruzione hai legato il nome a e il nome b all'oggetto che hai creato con Foo() (qui innanzi detto #foo). Se scrivi a.modify() Utilizzi a per raggiungere #foo, su cui chiami il metodo modify (che come si evince dal nome, lo modifica ;). A questo punto siccome #foo e' modificato, chiunque va a vedere #foo lo vede modificato. Se invece fai a = Bar() tu non modifichi l'oggetto #foo, modifichi il legame fra a e #foo. Il tuo primo caso e' un'istanza di questo: hai tre diversi modi per accedere ad una stessa lista e modifichi uno di questi legami in modo che si riferisce ad un'altra lista. Il secondo caso invece e' diverso: li hai proprio modificato l'oggetto lista cui si riferivano i tre nomi. Tutti e tre lo vedono modificato. Per una versione piu' completa e piu' divertente: http://python.net/~mwh/hacks/objectthink.html Sono due bellissime spiegazioni di questo fatto. -- . ..: -enrico- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python