Jestem bardzo nowy dla Pythona i chciałbym móc wykonać notację .
, aby uzyskać dostęp do obiektu dict
w python.Jak korzystać z notacji kropek dla dict w python?
Powiedzmy mam test
takiego:
>>>test = dict()
>>> test['name'] = 'value'
>>> print(test['name'])
value
Ale chciałabym zrobić test.name
dostać value
. Rzeczywiście zrobiłem to poprzez nadpisanie metody __getattr__
w mojej klasie tak:
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')
i to działa! kiedy zrobić:
test.name //I get value.
Ale problemem jest to, kiedy po prostu wydrukować test
sam pojawia się błąd jak:
'Sorry no key matches'
dlaczego tak się dzieje !!!
Z góry dziękuję.
Musisz zadzwonić do super klasy __getattr__, gdy pytasz o atrybut, którego nie ma w twoim dyktecie. –
@DavidHeffernan Czy klasa w starym stylu, taka jak OP, ma nawet nadklasę? – Aya
@Aya Nie mam pojęcia. Jeśli nie, użyj nowej klasy stylu. Kto i tak nadal korzysta ze starych klas? –