我正在使用object
函数(object()
)来创建一个对象,在Python中没有类,但它没有任何属性或参数,因此我试图通过创建一个类似thing = object()
的变量,然后使用setattr(thing, 'name', 'Marco')
来定制它但是它不会让我这样做,因为它抛出了一个错误,说:
>>> thing = object()
>>> setattr(thing, 'name', 'nothing')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'name'
我该怎么过这关?
当object
不能有属性,但对象函数可以(object()
)时,我不明白为什么它会这样做,然后当我试图为分配给变量的对象设置属性时,它抛出AttributeError
,而使用setattr()
的全部目的是设置属性lol
明确地说,
object()
有一个类(该类是object
);在Python中,没有类就不可能有实例也就是说,普通
object
没有存储任意属性的空间。如果您想要一个允许您创建任意属性的极简对象,请使用types.SimpleNamespace
,例如:当然,这里不需要
setattr
,因为您使用的是已知的属性名。只需使用普通属性分配即可:如果您确实通过
setattr
使用动态属性名称,那么最好完全跳过属性,只使用带有dict
查找语法的dict
:相关问题 更多 >
编程相关推荐