首页 > 解决方案 > 标准库中最简单的可修改 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 标准库中是否有类似的东西SimplestClassobject但可以修改?(我想在教育课程中使用它在课前介绍对象)

标签: python

解决方案


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

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

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

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

推荐阅读