<p>Suppose I have a python object <code>x</code> and a string <code>s</code>, how do I set the attribute <code>s</code> on <code>x</code>? So:</p>

<pre><code>&gt;&gt;&gt; x = SomeObject()
&gt;&gt;&gt; attr = 'myAttr'
&gt;&gt;&gt; # magic goes here
&gt;&gt;&gt; x.myAttr
'magic'
</code></pre>

<p>What's the magic? The goal of this, incidentally, is to cache calls to <code>x.__getattr__()</code>. </p>

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