【发布时间】:2010-12-04 11:31:58
【问题描述】:
所以,我在回答 this question 时正在玩 Python,我发现这是无效的:
o = object()
o.attr = 'hello'
由于AttributeError: 'object' object has no attribute 'attr'。但是,对于从对象继承的任何类,它都是有效的:
class Sub(object):
pass
s = Sub()
s.attr = 'hello'
打印s.attr 会按预期显示“你好”。为什么会这样? Python 语言规范中有什么规定不能将属性分配给普通对象?
【问题讨论】:
-
纯猜测:
object类型是不可变的,不能添加新属性?这似乎是最有意义的。 -
@S.Lott:请看这个问题的第一行。纯属好奇。
-
您的标题具有误导性,您试图在
object类实例上设置属性,而不是在object类上。
标签: python attributes language-design