2010-01-02 3 views

Répondre

4

Le UserDict.py présenté here émule intégrées dict près, donc par exemple:

>>> class m(dict): 
... def __missing__(self, key): return key + key 
... 
>>> a=m() 
>>> a['ciao'] 
'ciaociao' 

comme vous pouvez remplacer la méthode spéciale __missing__ pour traiter les clés manquantes lorsque vous sous-classe le dict intégré, de sorte que vous pouvez le remplacer lorsque vous sous-classe que UserDict.

Les docs Python officiels pour dict sont here, et ils le font dire:

Nouveau dans la version 2.5: Si une sous-classe de dict définit une méthode __missing__(), si la clé clé est absente , l'opération d[key] appelle cette méthode avec la clé en tant qu'argument. L'opération d[key] renvoie alors ou lève tout ce qui est renvoyé ou déclenché par l'appel __missing__(key) si la clé n'est pas présente. Aucune autre opération ou méthode n'appelle __missing__(). Si __missing__() n'est pas défini, KeyError est déclenché. __missing__() doit être une méthode; ça ne peut pas être une variable d'instance. Pour un exemple , voir collections.defaultdict.

0

Si vous voulez utiliser les valeurs par défaut dans un dict (alias __missing__), vous pouvez consulter defaultdict du module de collections:

from collections import defaultdict 

a = defaultdict(int) 

a[1] # -> 0 
a[2] += 1 
a # -> defaultdict(int, {1: 0, 2: 1}) 
Questions connexes