关于Python 2.x中的属性动态分配


问题内容

当我尝试将属性动态添加到对象类的实例时,出现AttributeError。但是,可以使用对象的子类实例来完成此操作。有人知道为什么吗?

>>> obj = object()
>>> obj.new_attr = "some value"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'new_attr'
>>> class MyClass(object):
...     pass
... 
>>> obj = MyClass()
>>> obj.new_attr = "some value"
>>> print obj.new_attr
some value

问题答案:

文档中有关于此的注释:

http://docs.python.org/3/library/functions.html#object

注意object没有__dict__,因此您不能为object该类的实例分配任意属性。

python邮件列表上也对此进行了讨论:

https://mail.python.org/pipermail/python-
list/2011-October/614249.html