python - 如何将动态属性设置为对象

时间:2014-07-24 19:24:33

标签: python

我正在尝试使用动态属性创建一个对象:

props = {}
setattr(props, "aaaa", 'magic')

它说:

AttributeError: 'dict' object has no attribute 'aaaa'

我做错了吗?

5 个答案:

答案 0 :(得分:3)

  

我做错了吗?

是的,您正在尝试在内置类型的对象上设置属性。在Python中,这些行为与您自己创建的对象略有不同。

所以自己创建一个类型,然后创建一个实例:

class myobject(object):
    pass

props = myobject()

现在您的setattr()将有效。

答案 1 :(得分:2)

props = {}
props["aaaa"] =  'magic'

你要做的是

 props.aaaa = "magic"

答案 2 :(得分:1)

  

我做错了吗?

嗯,你做错了两件事:

  1. 内置类(在C中定义的类)通常不能动态设置属性。

  2. 没有必要使用setattr。如果你有自己的dict子类,你可以props.aaaa = 'magic'

答案 3 :(得分:0)

如果python对象具有__dict__,则只能添加属性。看起来dict不行。

请参阅此答案以供参考:Adding attributes to python objects

答案 4 :(得分:0)

如果您想使用它的词典,这将有助于

props = {}
props.update({'aaaa':'magic'})