Python:无需自定义类,能否创建带指定字段的对象?
无需自定义类创建带属性的对象的技巧
当然可以!Python里确实有不用手动写class定义就能快速创建带指定属性的对象的小技巧,而且不止一种,完全满足你的需求😎
方法一:使用types.SimpleNamespace(推荐)
这是Python 3.3+标准库提供的专门用于创建极简属性容器的工具,用法超直观:
import types a = types.SimpleNamespace(s=2) print(a.s) # 输出: 2
它本质是一个极简的类,实例支持直接添加/修改属性,甚至自带友好的字符串表示,比自己写空类方便多了。
方法二:动态生成类并实例化
如果你不想导入模块,还可以用type函数直接动态生成一个临时类,然后实例化:
a = type('', (object,), {'s': 2})()
这里type的三个参数分别是:
- 第一个空字符串:临时类的名称(不用在意,反正只是临时用)
- 第二个元组
(object,):指定父类为object - 第三个字典
{'s':2}:直接定义类的属性,实例化后就自带s=2了
为什么a = None不行?
顺便提一句,None是NoneType的唯一实例,而Python的NoneType被设计为不可变且不允许添加属性,所以执行a.s=2会抛出AttributeError,但上面两种方法创建的都是普通的对象实例,支持属性操作。
这些技巧都不用你写一行class代码,完美解决你的需求!
内容的提问来源于stack exchange,提问作者duesterdust
相关产品推荐
相关产品推荐

