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
上述代码无效。任何建议?将动态属性添加到python对象
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
上述代码无效。任何建议?将动态属性添加到python对象
最简单的方法来填充一个dict
另一个是the update()
method,所以如果你扩展object
,以确保您的对象有一个__dict__
你可以尝试这样的事:
>>> class Site(object):
... pass
...
>>> site = Site()
>>> site.__dict__.update(dict)
>>> site.a
甚至可能是:
>>> class Site(object):
... def __init__(self,dict):
... self.__dict__.update(dict)
...
>>> site = Site(dict)
>>> site.a
class site(object):
pass
for k,v in dict.iteritems():
setattr(site,k,v)
print site.a #it does works
As docs say,object()
收益特征的对象,这意味着它不能有任何属性。它没有__dict__
。
你可以做的是:
>>> site = type('A', (object,), {'a': 42})
>>> site.a
42
当你说一些不起作用的信息时,会给出更多的信息,比如你想要发生什么,和/或抛出什么异常等等。 – dtlussier 2010-10-07 14:25:24