标准库中最简单的可修改Python类/对象



在Python中创建的最简单的对象是

obj = object()

然而,我们无法添加更多内容:

In [287]: obj = object()
In [288]: obj.param = 1
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-288-78f3fb98506b> in <module>
----> 1 obj.param = 1
AttributeError: 'object' object has no attribute 'param'

另一方面,如果我们创建一个最简单的类,然后创建该类的实例,它是可修改的:

In [289]: class SimplestClass: pass
In [290]: obj2 = SimplestClass()
In [291]: obj2.param = 1
In [292]: obj2.param
Out[292]: 1

问题是:python标准库中是否有类似于SimplestClass的内容,它与object类似,但可以修改?(我想在教育课程中使用它,在课前介绍对象(

您可以使用type创建一个无名称类并立即创建一个实例:

obj = type('', (), {})()
obj.a = 1
print(obj.a)
# 1

但是,如果您愿意使用setattr:,您仍然可以使用object

obj = object()
setattr(obj, 'a', 1)
print(obj.a)
# 1

最新更新