我正在尝试使用动态属性创建一个对象:
props = {}
setattr(props, "aaaa", 'magic')
它说:
AttributeError: 'dict' object has no attribute 'aaaa'
我做错了吗?
答案 0 :(得分:3)
我做错了吗?
是的,您正在尝试在内置类型的对象上设置属性。在Python中,这些行为与您自己创建的对象略有不同。
所以自己创建一个类型,然后创建一个实例:
class myobject(object):
pass
props = myobject()
现在您的setattr()
将有效。
答案 1 :(得分:2)
props = {}
props["aaaa"] = 'magic'
你要做的是
props.aaaa = "magic"
答案 2 :(得分:1)
我做错了吗?
嗯,你做错了两件事:
内置类(在C中定义的类)通常不能动态设置属性。
没有必要使用setattr。如果你有自己的dict子类,你可以props.aaaa = 'magic'
答案 3 :(得分:0)
如果python对象具有__dict__
,则只能添加属性。看起来dict不行。
请参阅此答案以供参考:Adding attributes to python objects
答案 4 :(得分:0)
如果您想使用它的词典,这将有助于
props = {}
props.update({'aaaa':'magic'})