Salve a tutti, ho un problema "teorico". Se eseguo il seguente codice:

class pippo():
     def __init__(self, pezzo):
          self.pezzo = pezzo

a = pippo(10)
b = a
a.pezzo = 5
print b.pezzo

... otterrò come risultato 5, perché a e b si riferiscono esattamente
allo stesso oggetto, che è stato modificato. Fin qui tutto bene (anche
se ci ho messo un po' a capirlo).

Però se dò il seguente codice:

a = 10
b = a
a = 5
print b

... ottengo invece come risultato 10, perché a e b si riferiscono a due
oggetti diversi.

Ovviamente non trovo affatto scandaloso (semplicemente perché ci
semplifica assai le cose) che il simbolo = la prima volta significhi
"indica lo stesso oggetto" e la seconda "fai una copia dell'oggetto". Il
problema è: ho notato che anche con le stringhe si ricade nel secondo
caso ("fai una copia"); esistono altri tipi di dato per cui la cosa
funziona così? C'è una classificazione precisa dei tipi in base al
comportamento di "="?

O semplicemente l'"=" significa sempre "fai una copia" tranne nel caso
di classi?

Anche solo un link per delucidarmi un po' le idee sarebbe molto gradito.

grazie, ciao

Pietro
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a