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

mat*_*sco 3 python

当我尝试动态地向对象类的实例添加属性时,我得到一个AttributeError.但是,可以使用object的子类实例来实现.有人知道为什么吗?

>>> 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
Run Code Online (Sandbox Code Playgroud)

pka*_*zak 5

文档中有一条关于此的说明:

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

" 注意:object没有__dict__,所以你不能将任意属性分配给对象类的实例."

在python邮件列表上也讨论了这个问题:

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