当我尝试在object
个实例上分配自定义属性时,会引发AttributeError
:
>>> o = object()
>>> o.hi = 'mom'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'hi'
大多数(所有?)内置类型都会发生同样的情况。
但是,当我创建普通object
子类的实例时,会成功创建新属性:
>>> class foobar(object): pass
...
>>> o = foobar()
>>> o.hi = 'mom'
>>> o.hi
'mom'
为什么会这样?我是否应该让我的类拒绝自定义属性以匹配object
行为?如果是这样,怎么办呢?