Ich bin sehr neu zu Python und ich wünschte, ich könnte .
Notation für den Zugriff auf dict
Objekt in Python tun.Wie Punktnotation für Dict in Python verwenden?
Lets sagen, ich habe test
wie folgt aus:
>>>test = dict()
>>> test['name'] = 'value'
>>> print(test['name'])
value
Aber ich wünschte, ich test.name
tun könnte value
zu bekommen. Infact Ich habe es durch Überschreiben der __getattr__
Methode in meiner Klasse wie folgt aus:
class JuspayObject:
def __init__(self,response):
self.__dict__['_response'] = response
def __getattr__(self,key):
try:
val = self._response[key]
return val
except KeyError,err:
sys.stderr.write('Sorry no key matches')
und das funktioniert! wenn ich das tue:
test.name //I get value.
Aber das Problem ist, wenn ich test
nur drucken allein erhalte ich den Fehler:
'Sorry no key matches'
warum das passiert !!!
Vielen Dank im Voraus.
Sie müssen Superklasse __getattr__ aufrufen, wenn Sie nach Attribut fragen, das nicht in Ihrem dict ist. –
@DavidHeffernan Hat eine Old-Style-Klasse wie das OP-Beispiel sogar eine Superklasse? – Aya
@Aya Keine Ahnung. Wenn nicht, verwenden Sie eine neue Stilklasse. Wer benutzt noch immer alte Stilklassen? –