Création d'un dict "parfait"
En Python, créer une classe personnalisée qui se comporte de la même manière qu'un dictionnaire peut être une tâche complexe. Voici comment y parvenir avec les classes de base abstraites (ABC).
Implémentation de MutableMapping ABC
Le module collections.abc fournit des ABC pour diverses structures de données, y compris MutableMapping. En implémentant MutableMapping, nous pouvons créer un objet avec la même interface qu'un dict. Voici une implémentation minimaliste :
from collections.abc import MutableMapping class TransformedDict(MutableMapping): def __init__(self, *args, **kwargs): self.store = dict() self.update(dict(*args, **kwargs)) def __getitem__(self, key): return self.store[self._keytransform(key)] def __setitem__(self, key, value): self.store[self._keytransform(key)] = value def __delitem__(self, key): del self.store[self._keytransform(key)] def __iter__(self): return iter(self.store) def __len__(self): return len(self.store) def _keytransform(self, key): return key
Personnalisation de la transformation de clé
En remplaçant la méthode _keytransform, nous pouvons appliquer des transformations arbitraires aux clés. Par exemple, pour forcer les touches minuscules :
class MyTransformedDict(TransformedDict): def _keytransform(self, key): return key.lower()
Avantages de l'ABC
La mise en œuvre de l'ABC offre plusieurs avantages :
En résumé, l'implémentation de MutableMapping et la substitution de _keytransform fournissent un moyen concis et efficace de créer un dict personnalisé avec une gestion des clés sur mesure tout en conservant la fonctionnalité d'un dict standard.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!