Expert Python
Vous ne pouvez pas utiliser getattr ()
chercher des choses dans un dictionnaire.
Mais la fonctionnalité «par défaut» de getattr ()
est tellement utile.
Quelle est la façon dictée de faire la même chose?
C’est l’un de ces articles que j’écris car je continue à le chercher.
Donc, si je l'écris, je m'en souviendrai. J'espère.
getattr
J’utilise le paramètre ‘default’ pour getattr depuis un certain temps et c’est très pratique.
C'est pratique dans beaucoup d'endroits, et évite d'avoir à envelopper les choses dans les blocs try / except.
Un exemple simple:
essayer:
toto = paramètres.FOO
sauf AttributeError:
foo = Aucun
essayer: foo = réglages.FOO sauf AttributeError: foo = Aucun |
Peut être remplacé par:
foo = getattr (paramètres, 'FOO', Aucun)
foo = getattr(réglages, 'FOO', Aucun) |
dictionnaire get ()
Mais getattr
ne fonctionne pas comme je l’attendais pour les dictionnaires.
Cela fait quelque chose, mais pas ce à quoi je m'attendais.
La plupart du temps, il ne cherche pas d’objets.
Utilisation obtenir()
au lieu.
Remplacer:
essayer:
foo = aDictionary[‘FOO’]
sauf KeyError:
foo = Aucun
essayer: foo = un dictionnaire[[[['FOO'] sauf KeyError: foo = Aucun |
Avec:
foo = aDictionary.get ('FOO', Aucun)
foo = un dictionnaire.obtenir('FOO', Aucun) |
[ad_2]