gpt4 book ai didi

python - 在Python中,有没有办法在使用__slots__的对象上使用json.dumps?

转载 作者:行者123 更新时间:2023-12-01 05:03:27 25 4
gpt4 key购买 nike

当我尝试使用json.dumps时在使用 __slots__ 的类的对象上,我得到“...不是 JSON 可序列化”,或者可能是 AttributeError__dict__不见了。我怎样才能让它发挥作用?看来__slots__应该告诉解释器使用虚拟字典来实现兼容性。

import json

class Foo:
__slots__ = ["bar"]
def __init__(self):
self.bar = 0

json.dumps(Foo())

最佳答案

普通的普通 json.dumps() 不支持自定义类,句号。他们是否使用 __slots__ 并不重要。

处理自定义类的一种流行方法是使用返回其 __dict__ 属性的 Hook ,这显然在这里不起作用。您必须找到另一种方法来序列化此类对象。

一种方法是让此类对象拥有专用方法:

class Foo:
__slots__ = ["bar"]
def __init__(self):
self.bar = 0

def json_serialize(self):
return {'bar': self.bar}

并在您的default Hook 中使用它:

json.dumps(Foo(), default=lambda o: o.json_serialize())

关于python - 在Python中,有没有办法在使用__slots__的对象上使用json.dumps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com