[Python] Puntatori o pseudo-tali

Pietro Battiston battiston a mail.dm.unipi.it
Mar 10 Lug 2007 00:10:52 CEST


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


Maggiori informazioni sulla lista Python