将 json 反序列化为 __dict__ 有奇怪的行为

问题描述 投票:0回答:1

在 python 2.7.13 中,我有一个类在

__init__
中执行以下操作:

self.__dict__ = json.load(f, encoding='utf-8-sig')

但是当我在我的 PC 上运行它时,它会按预期运行:将 json 文件元素反序列化为类属性,以便

self.__dict__
实际上包含相同的元素。

相反,在其他人的计算机中,它创建了一个进一步的子

__dict__
字典作为类的属性,这意味着 json 元素位于
self.__dict__["__dict__"]
或类似的东西内部。

这意味着它不是用 json 中的元素替换

self.__dict__
元素,而是在
__dict__
中创建另一个同名 (
self.__dict__
) 字典。

您知道为什么它对不同用户的行为如此不同以及如何防止它吗?

python json dictionary serialization attributes
1个回答
0
投票

看起来这有效:

self.__dict__.update(json.load(f, encoding='utf-8-sig'))

更新函数将字典元素添加到另一个字典中。 在

__dict__
上使用它可以使用
json.load
文件反序列化器函数返回的字典中的元素来丰富当前类的属性。

© www.soinside.com 2019 - 2024. All rights reserved.