老实说,我发现这种从其他应用程序中检索玩家数据的静态方法非常低效。
如果您不想写一堆,我建议participant.vars
直接获取数据。
如果您有一组应用程序,您app_sequence
可以随时使用参与者对象和相关对象管理器获取此数据。
假设您有应用程序['app1', 'app2', 'app3', 'conclusion']
。
然后,对于您在场的任何参与者,您都conclusion
可以通过以下方式获得所有参与者,例如app2
:
app2players = self.participant.app2_player.all()
然后你可以总结这组玩家的任何领域,或者其他什么。例如,这个将按顺序向您显示应用程序中的汇总收益:
def creating_session(self):
appseqs = [i.lower() for i in self.session.config['app_sequence']]
for p in self.session.get_participants():
for i in appseqs:
player_app_name = '{}_player'.format(i)
payoff = sum([j.payoff for j in getattr(p,player_app_name ).all()])
print('Payoff in app {} for the participant {}:: {}'.format(i, p.code, payoff))
输出将是:
Payoff in app trial_ch_uh for the participant ujngvqql:: 0 points
Payoff in app treatment_ch_uh for the participant ujngvqql:: 0 points
Payoff in app treatment_repeated_ch_uh for the participant ujngvqql:: 0 points
这是一个愚蠢的例子,因为我在creating_session
没有回报的时候计算它,但这只是为了说明这个想法