Python:创建对象并向其添加属性

问题:

我想在Python中创建一个动态对象(在另一个对象内),然后向其中添加属性。
我试过了:

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

但这没有办法。
有任何想法吗?
 edit:
我从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.attr1obj.a.attr2obj.a.attr3
我使用setattr函数,因为我不知道如何从for循环执行obj.a.NAME
在上面的例子中,如何根据p的值设置属性?

回答:

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

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

无论与尊贵的Bunch食谱相比,清晰度的损失是否可以,是一种风格决定,我当然会放弃给您。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python: create object and add attributes to it

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

26 − = 16