如何创建Python中没有类的对象?

2024-07-07 07:20:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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


Tags: 对象函数namemost参数属性object错误
1条回答
网友
1楼 · 发布于 2024-07-07 07:20:48

明确地说,object()有一个类(该类是object);在Python中,没有类就不可能有实例

也就是说,普通object没有存储任意属性的空间。如果您想要一个允许您创建任意属性的极简对象,请使用types.SimpleNamespace,例如:

import types  # At top of file

thing = types.SimpleNamespace()
setattr(thing, 'name', 'nothing')

当然,这里不需要setattr,因为您使用的是已知的属性名。只需使用普通属性分配即可:

thing.name = 'nothing'

如果您确实通过setattr使用动态属性名称,那么最好完全跳过属性,只使用带有dict查找语法的dict

thing = {}
thing['name'] = 'nothing'

相关问题 更多 >