在阅读一些代码时,我发现可以为 OrderedDict 的对象创建新属性,但是当我尝试为 Python 的 Dict 创建一个属性时,Python 不允许我这样做。
只是想知道为什么会发生这种情况,以及为什么当他们可以使用 OrderedDict 设置键值对时想要为 OrderedDict 创建属性。
在阅读一些代码时,我发现可以为 OrderedDict 的对象创建新属性,但是当我尝试为 Python 的 Dict 创建一个属性时,Python 不允许我这样做。
只是想知道为什么会发生这种情况,以及为什么当他们可以使用 OrderedDict 设置键值对时想要为 OrderedDict 创建属性。
OrderedDict
是在 Python 中实现的,您可以将任何属性分配给传统的 Python 对象(有一些例外,例如何时__slots__
定义)。注意:这并不意味着您应该这样做,或者这通常是一个好主意,但这是可能的。特别是,我认为没有任何正当理由使用OrderedDict
.
dict
相反,它是一个内置对象,并且是用 C 语言实现的。它没有自己__dict__
的属性来存储属性,这就是为什么你不能分配它们的原因。