考虑一场3轮比赛。在每一轮中,玩家都会做出选择(存储在变量choice
中)。
现在,在第3轮,我想打电话给someFunction
,从而获得第二轮的选择。
不幸的是someFunction
会返回None
。我不懂为什么。如果我将函数调用放在模板文件中,一切正常。
帮助会受到影响 - 我一直在寻找数小时。
class Subsession(BaseSubsession):
def before_session_starts(self):
if self.round_number == 3:
for player in self.get_players():
player.participant.vars['someKey'] = player.someFunction()
class Player(BasePlayer):
choice = models.CharField(initial=None,
choices=['A','B','C'],
widget=widgets.RadioSelect())
def someFunction(self):
return self.in_round(2).choice
为什么会这样?
答案 0 :(得分:1)
before_session_starts
函数在会话开始之前执行(因此其名称)。因此,当它被执行时,玩家还没有完成他/她的选择。这就是someFunction
返回None的原因。
您可以在第二轮结束时设置player.participant.vars['someKey'] = self.player.choice
,这将为您提供所需的结果。
class Choice(Page):
def before_next_page(self):
if self.player.round_number == 2:
player.participant.vars['someKey'] = self.player.choice