在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