Bonjour
Il y a quelques temps de cela, j'ai écrit une classe dérivée, au sens POO, de dict pour disposer de dictionnaires qui seraient, au niveau des clés de type chaine de caractères, insensibles à la casse (minuscules, majuscules : même combat).
Le but était de ne pas truffer mon code d'appels à upper, lower, isupper, etc... mais de centraliser la gestion de ce "problème" à un seul et même endroit. Ca me permet de pouvoir faire ceci :
J'ai repris ces derniers jours le code et ai cherché s'il n'existait pas un "truc" standard (fourni avec l'interpréteur ou dans PyPI). Je suis tombé sur le module UserDict qui propose, entre autres, les classes UserDict et IterableUserDict.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 >>> from cidict import cidict >>> >>> cid = cidict({'un':1,'Deux':2}) >>> >>> cid {'un': 1, 'deux': 2} >>> cid['DEUX'] 2 >>> >>> 'Un' in cid True
J'ai regardé le code correspondant (version 2.6) et je ne saisis pas l'apport de ces classes par rapport à une dérivation directe de dict. Côté intérêt didactique/pédagogique, pas de problème (ça m'a permis de compléter mon code initial). Mais l'inclure dans la distribution Python elle-même, je ne comprends pas. Qu'est-ce que je loupe ? Instancier directement ces classes n'a (je pense) aucun intérêt et il faut obligatoirement les dériver. Pourquoi alors passer par cet intermédiaire et refaire, peu ou prou, la même chose que si l'on dérivait dict ?
Partager