1

下面的代码data_var是我来自 Django 查询的对象,即 data_var = Datavar.objects.all(). 我有数据库字段,如field1, field2,field3等。在下面的代码中,我试图将字段的名称作为字符串获取var,然后说tg.var,但由于对象没有属性“var”,我得到一个错误:

如果我说它tg.var应该被解释为tg.field1or 2or 3。如何做到这一点?

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

2 回答 2

7

要使用字符串名称获取对象的属性,您应该使用getattr内置函数,这样可以将您的代码转换为下一行:

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

gettatr在 Python 文档中进行了解释。

于 2012-08-09T12:19:02.450 回答
1

看起来您正在尝试 PHP 中的变量变量。Python 没有。您需要使用字典或 getattr。

(编辑,因为第一个答案已经涵盖了 getattr)。

您也可以从 dict 中引用它:

>>> var = 'field1'
>>> tg.__dict__[var]
'this is field1'
>>> var = 'field2'
>>> tg.__dict__[var]
'this is field2'
>>> getattr(tg, var)
'this is field2'
于 2012-08-09T12:26:25.660 回答