[Python] Assegnamento e liste

Diego Barrera diegonebarrera a yahoo.it
Mar 17 Gen 2012 15:47:04 CET


Ciao a tutti
Ho creato questa classe:

class Traduttore:
     """
     La classe astratta 'Traduttore' definisce un oggetto di tipo
     traduttore.
     La classe rappresenta ogni oggetto in grado di leggere da qualsiasi
     sorgente e scrivere in qualsiasi destinazione: DB, csv, xml, html...
     Ogni sottoclasse deve avere un lettore e uno scrittore appropriato
     alla sorgente e alla destinazione.
     """
     def __init__(self,tipo):
         if tipo=='fix_csv2csv':
             self.lettore=Lettore_fix_csv()
             self.scrittore=Scrittore_csv()
             self.dati=self.scrittore.dati=self.lettore.dati

Sia la classe lettore che quella scrittore hanno una proprieta' *dati* 
che non e' altro che una lista.
Da quello che sapevo, l'ultimo assegnamento dovrebbe far puntare

self.dati, self.lettore.dati, e self.scrittore.dati alla stessa lista...

invece piu' avanti utilizzo una cosa tipo

self.dati=self.dati[:-1]

da cui mi rendo conto che l'unica lista modificata e' self.dati
Perche'?

invece usando

del self.dati[-1:]

modifico tutte e tre!!

Chiaramente ho risolto, ma perche' si comporta cosi'?
Grazie mille
diego



Maggiori informazioni sulla lista Python