我正在尝试动态属性分配以进行测试,并发现了以下行为:
>>> class Foo(object): pass
...
>>> bar = Spam()
>>> bar.a = 1
>>> spam = object()
>>> spam.a = 2
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'object' object has no attribute 'a'
为什么带有派生类的第一个版本是合法的,但第二个直接使用object
不是?这对我来说似乎有点奇怪,因为派生并没有改变任何与变量赋值的处理方式明显有关的东西。