python - 如何覆盖 Python Dataclass 'asdict' 方法

标签 python python-dataclasses

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

@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 来实现这一点。方法到我的数据类,它返回所需的字典,但这不起作用。
我怎样才能得到我想要的结果?

最佳答案

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

关于python - 如何覆盖 Python Dataclass 'asdict' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64422367/

相关文章:

python - 如何使__slots__更好地使用数据类?

python-3.x - Python 3.7数据类: Raise error when assigning a value to undefined attribute

python - Python/Pandas 中读取表时出错

python - 组合多个正则表达式模式 1 用于匹配,其余用于排除

python - 操作系统错误: [Errrno 22] Invalid Argument - having problem with a username of "\robk\' in file path

python - 数据类不从其父级继承 __eq__() 方法

python - 在数据类中解压 kwargs

python-3.x - 如何初始化 Python 数据类 2D 列表?

python - 在 PySpark 中创建具有连续数字的整数数组

python - S3分段上传-异步完成分段上传