我们可以动态设置对象属性吗?

时间:2017-12-01 02:32:50

标签: python python-3.x

对象的属性是否可以动态生效?

属性名称是:
pergunta1item
pergunta2item

此数据是动态生成的。

我试过这种方式

{{ object.data.pesquisa+var.id+item }}

但是,没有用。

感谢。

2 个答案:

答案 0 :(得分:1)

您需要将属性名称构造为字符串,然后use getattr在父对象上查找它,替换:

object.data.pesquisa+var.id+item

使用:

# We're looking up an attribute of object.data
# with a dynamically generated name
getattr(object.data, 'pesquisa{}item'.format(var.id))

请注意,正如其他人所提到的,一组编号的项目可能应该作为单个list(或tupledict处理,具体取决于需求)名称,所以你可以这样做:

object.data.pesquisaitems[var.id]

在固定名称上查找动态索引,但如果无法更改数据源,则可以使用getattr

答案 1 :(得分:-2)

我们当然可以。您需要做的是添加新的归因并分配给旧值,然后删除旧归属。

def motify_attri(d,newattr,oldattr):
    d[newattr] = d[oldattr]
    d.pop(oldattr)

d = dict(key1='a',key2='2')
print(d)
motify_attri(d,'key3','key2')
print(d)

然后:

{'key2': '2', 'key1': 'a'}
{'key3': '2', 'key1': 'a'}
[Finished in 0.0s]