/ / Python: fare riferimento a oggetti in modo dinamico - python

Python: fai riferimento agli oggetti in modo dinamico - python

Mi scuso se questa è una domanda stupida.

Ho un elenco di potenziali chiavi del dizionario qui:

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

Attualmente sto aggiungendo manualmente valori a questi tasti in questo modo:

        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]

Mi piacerebbe essere in grado di fare un uso di un ciclo for per farlo tutto in una volta in questo modo:

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

Ovviamente, tuttavia, non posso fare riferimento all'oggetto self.player.i come quello. C'è un modo per fare riferimento a quell'oggetto dinamicamente?

risposte:

1 per risposta № 1

uso getattr, Per esempio, getattr(x, "foobar") è equivalente a 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)]