Возвращать нужный словарь при обращении к классу
Есть класс с ответом запроса, как можно сделать так что бы при обращении брался сразу и возвращался self.resp, по типу d['test'] а не d.resp['test']? Я пытался поменять метод get но ничего не вышло(
class RequestResponse:
def __init__(self, resp, error=None):
self.resp = resp
self.error = error
def __get__(self):
return self.resp
d = RequestResponse({"test": 1, "test2": 3})
print(d) # {"test": 1, "test2": 3}
print(d['test']) # 1
Ответы (2 шт):
Автор решения: Сергей Кох
→ Ссылка
Я не понял, вы хотите приравнять объект d к словарю d.resp? Вот что-то такое возможно:
class RequestResponse:
def __init__(self, resp, error=None):
self.resp = resp
self.test, self.test2 = resp.values()
self.error = error
@staticmethod
def dict(resp):
return resp
d = RequestResponse({"test": 1, "test2": 3})
print(d.resp)
print(d.test, d.test2)
c = RequestResponse.dict({"test": 1, "test2": 3})
print(c)
print(c['test'])
{'test': 1, 'test2': 3}
1 3
{'test': 1, 'test2': 3}
1
Автор решения: Evrik
→ Ссылка
Если Вы хотите, чтобы Ваш класс мог возвращать значения при обращении к нему по индексу, то нужно перегружать метод getitem
class RequestResponse:
def __init__(self, resp, error=None):
self.resp = resp
self.error = error
def __getitem__(self, key):
return self.resp[key]
d = RequestResponse({"test": 1, "test2": 3})
print(d) # {"test": 1, "test2": 3}
print(d['test']) # 1