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

Rispondere a