Python:动态引用对象

时间:2018-04-17 23:20:42

标签: python

如果这是一个愚蠢的问题,请道歉。

我在这里有一个潜在的字典键列表:

 form_fields = ['sex',
                'birth',
                'location',
                'politics']

我目前正在手动为这些键添加值,如下所示:

        self.participant.vars["sex"] =  [Constants.fields_dict["sex"][0], Constants.fields_dict["sex"][1], self.player.name]
        self.participant.vars["birth"] = [Constants.fields_dict["birth"][0], Constants.fields_dict["birth"][1],self.player.age]
        self.participant.vars["location"] = [Constants.fields_dict["location"][0], Constants.fields_dict["location"][1],self.player.politics]

我希望能够像这样一起使用for循环来完成所有这些:

for i in form_fields:
    self.participant.vars[i] =  [Constants.fields_dict[i][0], Constants.fields_dict[i][1], self.player.`i`]

但是,显然,我不能像那样引用对象self.player。i。有没有办法动态引用该对象?

1 个答案:

答案 0 :(得分:1)

使用getattr,例如,getattr(x, 'foobar')相当于x.foobar

for i in form_fields:
    self.participant.vars[i] =  [Constants.fields_dict[i][0], Constants.fields_dict[i][1], getattr(self.player, i)]