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