+-
python – 如何创建对象并向其添加属性?
我想在 Python中创建一个动态对象(在另一个对象内),然后为其添加属性.

我试过了:

obj = someobject
obj.a = object()
setattr(obj.a, 'somefield', 'somevalue')

但这没用.

有任何想法吗?

编辑:

我从for循环设置属性,循环遍历值列表,例如

params = ['attr1', 'attr2', 'attr3']
obj = someobject
obj.a = object()

for p in params:
   obj.a.p # where p comes from for loop variable

在上面的例子中,我会得到obj.a.attr1,obj.a.attr2,obj.a.attr3.

我使用了setattr函数,因为我不知道如何从for循环中执行obj.a.NAME.

如何根据上面示例中的p值设置属性?

最佳答案
您可以使用我古老的 Bunch配方,但如果您不想制作“束类”,Python中已经存在一个非常简单的配方 – 所有函数都可以具有任意属性(包括lambda函数).所以,以下工作:

obj = someobject
obj.a = lambda: None
setattr(obj.a, 'somefield', 'somevalue')

与古老的束配方相比,失去清晰度是否合适,是一种风格决定,我当然会留给你.

点击查看更多相关文章

转载注明原文:python – 如何创建对象并向其添加属性? - 乐贴网