Per definizione, le istanze di classe sia di vecchio che di nuovo stile, hanno un dizionario per la memorizzazione degli attributi. Questo porta ad uno spreco di memoria per quegli oggetti che hanno pochissime variabili d'istanza. Tale consumo può essere notevole quando il numero di istanze create è enorme.
Il dizionario predefinito può essere sovrascritto definendo __slots__ in una classe di nuovo stile. La dichiarazione di __slots__ accetta una sequenza di variabili d'istanza e riserva per ognuna di esse spazio a sufficienza per conservare il valore di ciascuna variabile. Risparmia spazio perché __dict__ non viene creato per ogni istanza.
Note d'utilizzo di __slots__
'__dict__'
alla
sequenza di stringhe presenti nella dichiarazione __slots__.
Modificato nella versione 2.3:
'__dict__'
aggiunto alla dichiarazione
__slots__ non abiliterà l'assegnamento di nuove variabili non
elencate specificatamente nella sequenza dei nomi delle variabili
d'istanza..
'__weakref__'
alla
sequenza di stringhe della dichiarazione __slots__.
Modificato nella versione 2.3:
precendentemente, l'aggiunta di '__weakref__'
alla dichiarazione __slots__ non abilitava i riferimenti
deboli..
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.