167 votes

Comment utiliser la notation du point pour le dict en python ?

Je suis très novice en matière de python et j'aimerais pouvoir faire . pour accéder aux valeurs d'un dict .

Disons que j'ai test comme ça :

>>> test = dict()
>>> test['name'] = 'value'
>>> print(test['name'])
value

Mais j'aimerais pouvoir faire test.name pour obtenir value . En fait, je l'ai fait en remplaçant l'option __getattr__ dans ma classe comme ceci :

class JuspayObject:

    def __init__(self,response):
        self.__dict__['_response'] = response

    def __getattr__(self,key): 
        try:
            return self._response[key]
        except KeyError,err:
            sys.stderr.write('Sorry no key matches')

et ça marche ! quand je le fais :

test.name // I get value.

Mais le problème est que lorsque j'imprime juste test seul j'obtiens l'erreur comme :

'Sorry no key matches'

Pourquoi cela se produit-il ?

0voto

Frankthetank Points 21
#!/usr/bin/env python3

import json
from sklearn.utils import Bunch
from collections.abc import MutableMapping

def dotted(inpt: MutableMapping,
           *args,
           **kwargs
           ) -> Bunch:
    """
    Enables recursive dot notation for ``dict``.
    """

    return json.loads(json.dumps(inpt),
                      object_hook=lambda x:
                      Bunch(**{**Bunch(), **x}))

-1voto

Ajouter un __repr__() à la classe afin que vous puissiez personnaliser le texte à afficher sur l'écran d'accueil.

print text

Pour en savoir plus, cliquez ici : https://web.archive.org/web/20121022015531/http://diveintopython.net/object_oriented_framework/special_class_methods2.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X