对于Web应用程序,我想要一个可以提高的dict
。
from json import dumps
class RaiseableDict(dict, Exception): pass # This won't work.
# I want this to work without change:
try:
raise RaiseableDict(message='Some message text.')
except RaiseableDict as rd:
rd['key'] = 'value'
rd.update({'error_code': 42})
dumps(rd)
我怎么能避免
TypeError: multiple bases have instance lay-out conflict
并且有一些可升级的dict
式异常,可以直接进行JSON转储,而无需访问异常子类的特殊属性或必须使用json.dumps
的default=
参数?
您是否可以简单地定义异常作为字典工作所需的方法,还可以定义异常的转储方法?
>>> import json
>>> class RaiseableDict(Exception):
def __init__(self, message):
self.message = message
self._dict = {}
def __setitem__(self, key, value):
self._dict[key] = value
def __getitem__(self, key):
return self._dict[key]
def update(self, other_dict):
self._dict.update(other_dict)
def dumps(self):
return json.dumps(self._dict)
>>> try:
raise RaiseableDict(message='Some message text.')
except RaiseableDict as rd:
rd['key'] = 'value'
rd.update({'error_code': 42})
rd.dumps()
'{"key": "value", "error_code": 42}'