如何覆盖 Python 数据类 'asdict' 方法

How to overwrite Python Dataclass 'asdict' method

我有一个数据类,它看起来像这样:

@dataclass
class myClass:
   id: str
   mode: str
   value: float

这导致:

dataclasses.asdict(myClass)
{"id": id, "mode": mode, "value": value}

但我想要的是

{id:{"mode": mode, "value": value}}

我认为我可以通过向我的数据类添加一个 to_dict 方法来实现此目的,该方法 returns 是所需的字典,但这没有用。

我怎样才能得到我想要的结果?

from dataclasses import dataclass, asdict


@dataclass
class myClass:
    id: str
    mode: str
    value: float


def my_dict(data):
    return {
        data[0][1]: {
            field: value for field, value in data[1:]
        }
    }


instance = myClass("123", "read", 1.23)

data = {"123": {"mode": "read", "value":  1.23}}

assert asdict(instance, dict_factory=my_dict) == data