Shortest way of creating an object with arbitrary attributes in Python?
<p>Hey, I just started wondering about this as I came upon a code that expected an object with a certain set of attributes (but with no specification of what type this object should be).</p>

<p>One solution would be to create a new class that has the attributes the code expects, but as I call other code that also needs objects with (other) attributes, I'd have to create more and more classes.</p>

<p>A shorter solution is to create a generic class, and then set the attributes on instances of it (for those who thought of using an instance of <code>object</code> instead of creating a new class, that won't work since <code>object</code> instances don't allow new attributes).</p>

<p>The last, shortest solution I came up with was to create a class with a constructor that takes keyword arguments, just like the <code>dict</code> constructor, and then sets them as attributes:</p>

<pre><code>class data:
    def __init__(self, **kw):
        for name in kw:
            setattr(self, name, kw[name])

options = data(do_good_stuff=True, do_bad_stuff=False)
</code></pre>

<p>But I can't help feeling like I've missed something obvious... Isn't there a built-in way to do this (preferably supported in Python 2.5)?</p>
