2012-08-09 57 views
0

获取一个对象的属性在以下代码data_var是从一个Django查询我的对象,即data_var = Datavar.objects.all()。我有数据库字段如field1field2,field3等在下面的代码中,我试图获取该字段的名称作为字符串在var然后说tg.var但我得到一个错误,因为对象没有属性'var':通过属性的字符串名称在Python

如果我说tg.var它应该被解释为tg.field123。如何实现这一目标?

for tg in data_var: 
    for col in range(content.no_of_cols): 
     var = "field" + str(col) 
     tg.var 
+0

你能澄清你的期望输出应该是什么?一个例子会很好。 – thegrinner 2012-08-09 12:12:06

+0

我已经HIGHT点燃it.tg.var应该被假定为tg.field1等.... – Rajeev 2012-08-09 12:13:30

回答

5

要获得对象的你应该使用getattr内置函数的字符串名称属性,这种方式将你的代码的下一行:

for tg in data_var: 
    for col in range(content.no_of_cols): 
     var = "field" + str(col) 
     value = getattr(tg, var) 

gettatr在Python文档的解释。

+2

'var'不是''var''? – Ghopper21 2012-08-09 12:19:50

+0

当然,谢谢,我编辑过。 – 2012-08-09 12:20:56

1

看起来你正在尝试像PHP一样的变量变量。 Python没有它。你需要使用字典或getattr。

(编辑自第一个答案已经涵盖getattr)。

您也可以从字典引用它:

>>> var = 'field1' 
>>> tg.__dict__[var] 
'this is field1' 
>>> var = 'field2' 
>>> tg.__dict__[var] 
'this is field2' 
>>> getattr(tg, var) 
'this is field2' 
+0

K谢谢你下次会用这个.. – Rajeev 2012-08-09 12:40:19

相关问题