创建dict和Exception的子类

2024-09-28 01:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

对于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

还有一些类似于raise的dict异常,可以直接被JSON转储,而不必访问异常子类的特殊属性或使用json.dumpsdefault=参数


Tags: fromimportwebjson应用程序messageexceptionpass
1条回答
网友
1楼 · 发布于 2024-09-28 01:22:45

您能否简单地定义异常作为字典工作所需的方法,并定义异常的dumps方法

>>> 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}'

相关问题 更多 >

    热门问题