在Python中如何以编程方式设置属性?

问题:

假设我有一个python对象x和一个字符串s,我如何在x上设置属性s?所以:

>>> x = SomeObject()
>>> attr = 'myAttr'
>>> # magic goes here
>>> x.myAttr
'magic'

有什么魔法?顺便提一句,目标是缓存x.__getattr__()的呼叫。

回答:

setattr(x, attr, 'magic')

有关于它的帮助:

>>> help(setattr)
Help on built-in function setattr in module __builtin__:

setattr(...)
    setattr(object, name, value)

    Set a named attribute on an object; setattr(x, 'y', v) is equivalent to
    ``x.y = v''.

编辑:但是,您应该注意(如注释中所指出的),您不能对“纯”对象实例执行此操作。但是可能你有一个简单的对象子类,它可以正常工作。我强烈要求O.P.永远不要像这样的对象。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do you programmatically set an attribute in Python?

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

发表评论

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

75 − 66 =