首页 > 解决方案 > 为什么我们可以为 OrderedDict 的对象创建属性,但不能为 Dict 创建属性?

问题描述

在阅读一些代码时,我发现可以为 OrderedDict 的对象创建新属性,但是当我尝试为 Python 的 Dict 创建一个属性时,Python 不允许我这样做。

只是想知道为什么会发生这种情况,以及为什么当他们可以使用 OrderedDict 设置键值对时想要为 OrderedDict 创建属性。

标签: pythonordereddictionaryordereddict

解决方案


OrderedDict是在 Python 中实现的,您可以将任何属性分配给传统的 Python 对象(有一些例外,例如何时__slots__定义)。注意:这并不意味着您应该这样做,或者这通常是一个好主意,但这是可能的。特别是,我认为没有任何正当理由使用OrderedDict.

dict相反,它是一个内置对象,并且是用 C 语言实现的。它没有自己__dict__的属性来存储属性,这就是为什么你不能分配它们的原因。


推荐阅读