How do you programmatically set an attribute?
假设我有一个python对象
1 2 3 4 5 | >>> x = SomeObject() >>> attr = 'myAttr' >>> # magic goes here >>> x.myAttr 'magic' |
魔法是什么?顺便说一下,这样做的目的是缓存对
1 | setattr(x, attr, 'magic') |
有关帮助:
1 2 3 4 5 6 7 8 | >>> 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''. |
号
编辑:但是,您应该注意(正如注释中指出的那样),您不能对
通常,我们为此定义类。
1 2 3 4 5 6 7 | class XClass( object ): def __init__( self ): self.myAttr= None x= XClass() x.myAttr= 'magic' x.myAttr |
但是,在某种程度上,您可以使用
1 2 3 4 5 | >>> a= object() >>> setattr( a, 'hi', 'mom' ) Traceback (most recent call last): File"<stdin>", line 1, in <module> AttributeError: 'object' object has no attribute 'hi' |
。
然而,他们在各种简单的类上工作。
1 2 3 4 5 6 | class YClass( object ): pass y= YClass() setattr( y, 'myAttr', 'magic' ) y.myAttr |
假设x是一个物体,那么你可以用两种方法
1 2 | x.attr_name = s setattr(x, 'attr_name', s) |
。