On 17/01/2012 16:23, enrico franchi wrote:
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.
In sostanza gli ho detto crea una nuova lista uguale alla prima senza
l'ultimo elemento e puntla;
giusto?
Grazie,
ora mi studio i link proposti.
Ciao diego
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python