我想在某些时间点转储我的 Python 对象以进行故障排除。我正在尝试使用 ujson 将对象转储到文件中。但是,只有我的对象中的公共属性被写入文件。受保护的属性将被忽略。
这是一个 IPython 代码片段,试图解释这个问题:
In [49]: class Harlog:
...: def __init__(self):
...: self.a = 1
...: self.b = 2
...: self.c = 3
...: self._d = 4
...:
In [50]: harlog = HarLog()
In [51]: vars(harlog)
Out[51]: {}
In [52]: ujson.dumps(harlog)
Out[52]: '{"a":1,"b":2,"c":3}'
请注意,受保护的属性“_d”没有作为转储的一部分进行序列化。
寻找这背后的原因,以及是否有办法序列化受保护的成员。