I seguenti tipi possono essere serializzati:
None, True e False
I tentativi di serializzare oggetti non serializzabili, solleveranno l'eccezione PicklingError; quando questo si verifica, un numero indefinito di bytes nel file sottostante potrebbe essere gi� stato scritto.
Notate che le funzioni (sia built-in che definite dall'utente) vengono serializzate mediante un nome di riferimento ``pienamente qualificato'', non mediante un valore. Ci� significa che viene serializzato solo il nome della funzione, mediante il nome del modulo con cui viene definita la funzione stessa. Non vengono serializzati n� il codice della funzione n� alcuno dei suoi attributi. Perci� il modulo che definisce la funzione deve essere importabile nell'ambiente non serializzabile, e deve contenere l'oggettto nominato, altrimenti verr� sollevata un'eccezione. 3.5
Analogamente le classi vengono serializzate in base al nome di
riferimento, cosicch� vengono applicate le stesse restrizioni adottate
nell'ambiente deserializzato. Notate che non viene serializzato nessun
dato o codice delle classi, cos� nel seguente esempio l'attributo di
classe attr non viene ristabilito nell'ambiente deserializzato:
class Foo:
attr = 'a class attr'
picklestring = pickle.dumps(Foo)
Queste restrizioni sono il motivo per cui le funzioni e le classi serializzabili debbano venire definite nelle righe iniziali dei moduli.
Analogamente, quando vengono serializzate istanze di classi, non vengono serializzati attraverso di esse n� il loro codice n� i loro dati. Vengono serializzati solo i dati di istanze. Questo � stato fatto di proposito, cos� che sia possibile correggere degli errori in una classe, o aggiungere metodi alla classe, ed ancora caricare oggetti che sono stati creati con una precedente versione della classe. Se prevedete di utilizzare oggetti longevi che possano sopravvivere a molte versioni di una classe, allora pu� essere conveniente inserire un numero di versione nell'oggetto, in modo tale che le conversioni desiderate possano venire effettuate dal metodo della classe __setstate__().