site = object() mydict = {'name': 'My Site', 'location': 'Zhengjiang'} for key, value in mydict.iteritems(): setattr(site, key, value) print site.a # it doesn't work The above code didn't work. Any suggestion?
site = object() mydict = {'name': 'My Site', 'location': 'Zhengjiang'} for key, value in mydict.iteritems(): setattr(site, key, value) print site.a # it doesn't work The above code didn't work. Any suggestion?
The easiest way to populate one dict with another is the update() method, so if you extend object to ensure your object has a __dict__ you could try something like this:
>>> class Site(object): ... pass ... >>> site = Site() >>> site.__dict__.update(dict) >>> site.a Or possibly even:
>>> class Site(object): ... def __init__(self,dict): ... self.__dict__.update(dict) ... >>> site = Site(dict) >>> site.a As docs say, object() returns featureless object, meaning it cannot have any attributes. It doesn't have __dict__.
What you could do is the following:
>>> site = type('A', (object,), {'a': 42}) >>> site.a 42 class site(object): pass for k,v in dict.iteritems(): setattr(site,k,v) print site.a #it does works object. However, you offer a solution which adds attributes to the class site. I recognize that it works, but may not be what they had in mind.object instance is not possible