[Python] Assegnamento e liste

Diego Barrera diegonebarrera a yahoo.it
Mar 17 Gen 2012 19:02:41 CET


On 17/01/2012 16:23, enrico franchi wrote:
> 2012/1/17 Diego Barrera<diegonebarrera a 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



Maggiori informazioni sulla lista Python