在 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__
) 字典。
您知道为什么它对不同用户的行为如此不同以及如何防止它吗?
看起来这有效:
self.__dict__.update(json.load(f, encoding='utf-8-sig'))
更新函数将字典元素添加到另一个字典中。 在
__dict__
上使用它可以使用 json.load
文件反序列化器函数返回的字典中的元素来丰富当前类的属性。