将动态属性添加到python对象

时间:2010-10-07 13:02:15

标签: python dynamic properties add

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

上面的代码不起作用。有什么建议吗?

3 个答案:

答案 0 :(得分:7)

将一个dict填充到另一个the update() method的最简单方法是{{3}},因此如果您延长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

答案 1 :(得分:6)

As docs sayobject()返回无特征对象,这意味着它不具有任何属性。它没有__dict__

您可以做的是:

>>> site = type('A', (object,), {'a': 42})
>>> site.a
42

答案 2 :(得分:1)

class site(object):
    pass
for k,v in dict.iteritems():
    setattr(site,k,v)
print site.a #it does works