关于序列化的问题,请教老师

来源:7-7 从json序列化看代码解释权反转

老卢123123

2018-07-16

import json


class A:
    def __init__(self):
        self.a = 'A_a'
        self.b = 'A_b'


class B:
    def __init__(self):
        self.a = A
        self.b = 'B_b'


class C:
    def __init__(self):
        self.a = A
        self.b = B
        self.c = 'C_c'

x = A()
y = B()
z = C()

print(x.__dict__)
print(y.__dict__)
print(z.__dict__)

print(json.dumps(z, default=lambda o:o.__dict__))

结果分别是:

{'a': 'A_a', 'b': 'A_b'}

{'a': <class '__main__.A'>, 'b': 'B_b'}

{'a': <class '__main__.A'>, 'b': <class '__main__.B'>, 'c': 'C_c'}

最后的序列化报错:


AttributeError: 'mappingproxy' object has no attribute '__dict__'

写回答

2回答

宇泰

2021-09-07


class A:
    def __init__(self):
        self.a = 'A_a'
        self.b = 'A_b'


class B:
    def __init__(self):
        self.a = A()
        self.b = 'B_b'


class C:
    def __init__(self):
        self.a = A()
        self.b = B()
        self.c = 'C_c'


x = A()
y = B()
z = C()

print(x.__dict__)
print(y.__dict__)
print(z.__dict__)

print(json.dumps(z, default=lambda o: o.__dict__))  

{'a': 'A_a', 'b': 'A_b'}{'a': <__main__.A object at 0x00000162E568D780>, 'b': 'B_b'}{'a': <__main__.A object at 0x00000162E568DB00>, 'b': <__main__.B object at 0x00000162E56E3160>, 'c': 'C_c'}{"a": {"a": "A_a", "b": "A_b"}, "b": {"a": {"a": "A_a", "b": "A_b"}, "b": "B_b"}, "c": "C_c"}


0
0

7七月

2018-07-18

报错的信息呢?

0
0

Python Flask高级编程之从0到1开发《鱼书》精品项目

7月老师深入浅出剖析Flask核心机制,和你一起探讨Python高级编程

2751 学习 · 1277 问题

查看课程