How can I create an object and add attributes to it?

attributes, class, object, python

Solution

You could use my ancient Bunch recipe, but if you don't want to make a "bunch class", a very simple one already exists in Python -- all functions can have arbitrary attributes (including lambda functions). So, the following works:

obj = lambda: None
obj.somefield = 'somevalue'

Whether the loss of clarity compared to the venerable `Bunch` recipe is OK, is a style decision I will of course leave up to you.

Problem

I want to create a dynamic object in Python and then add attributes to it. This didn't work: ``` obj = object() obj.somefield = "somevalue" ``` AttributeError: 'object' object has no attribute 'somefield' For details on why it doesn't work, see Can't set attributes on instance of "object" class.

Original source

Related problems