3.7 UserDict -- Wrapper per classi di oggetti dizionario

Note: Questo modulo è disponibile solo per compatibilità all'indietro. Se si sta scrivendo codice che non deve lavorare con versioni di Python precedenti alla 2.2, è consigliabile usare direttamente una sotto classe del tipo built-in dict.

Questo modulo definisce una classe che si comporta da wrapper per gli oggetti dizionario. È una classe di base piuttosto utile per le proprie implementazioni delle classi dizionario, che può ereditarne e sovrascriverne i metodi esistenti o aggiungerne di nuovi. In questo modo possono venire aggiunti nuovi comportamenti ai dizionari.

Il modulo definisce anche un mix definendo tutti i metodi dei dizionari per le classi cha già hanno un minimo di interfacce mappate. Questo semplifica enormemente la scrittura di classi che necessitino essere sostituibili per i dizionari (come il modulo shelve).

Il modulo UserDict definisce la classe UserDict e DictMixin:

class UserDict( [initialdata])
Classe che simula un dizionario. I contenuti dell'istanza vengono memorizzati in un dizionario regolare, accessibile attraverso l'attributo data dell'istanza UserDict. Se initialdata viene fornita, data viene inizializzato con il suo contenuto; notate che un riferimento ad initialdata non verrà mantenuto, consentendone l'uso per altri scopi.

Oltre a supportare metodi e operazioni di mapping (vedete la sezione 2.3.8), l'istanza di UserDict fornisce anche i seguenti attributi:

data
Un dizionario reale utilizzato per memorizzare il contenuto della classe UserDict.

class DictMixin( )
Definisce tutti i metodi di dizionari, per classi che già possiedono un minimo di interfaccia ai dizionari, includendo __getitem__(), __setitem__(), __delitem__(), and keys().

Questo mix dovrebbe venire usato come superclasse. Aggiungendo ciascuno dei metodi indicati sopra, integra progressivamente maggiori funzionalità. Per esempio, definendo tutti i metodi tranne __delitem__ si precluderà soltanto pop e popitem dall'interfaccia completa.

In aggiunta ai quattro metodi di base, viene progressivamente raggiunta maggiore efficienza definendo __contains__(), __iter__() e iteritems().

Poiché mixin non ha conoscenza del costruttore della sotto classe, non definisce __init__() o copy().

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.