How do you programmatically set an attribute? How do you programmatically set an attribute? python python

How do you programmatically set an attribute?


setattr(x, attr, 'magic')

For help on it:

>>> 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''.

However, you should note that you can't do that to a "pure" instance of object. But it is likely you have a simple subclass of object where it will work fine. I would strongly urge the O.P. to never make instances of object like that.


Usually, we define classes for this.

class XClass( object ):   def __init__( self ):       self.myAttr= Nonex= XClass()x.myAttr= 'magic'x.myAttr

However, you can, to an extent, do this with the setattr and getattr built-in functions. However, they don't work on instances of object directly.

>>> a= object()>>> setattr( a, 'hi', 'mom' )Traceback (most recent call last):  File "<stdin>", line 1, in <module>AttributeError: 'object' object has no attribute 'hi'

They do, however, work on all kinds of simple classes.

class YClass( object ):    passy= YClass()setattr( y, 'myAttr', 'magic' )y.myAttr


let x be an object then you can do it two ways

x.attr_name = s setattr(x, 'attr_name', s)