+-

我想在 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 – 如何创建对象并向其添加属性? - 乐贴网