首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >in_round()函数( oTree )

in_round()函数( oTree )
EN

Stack Overflow用户
提问于 2017-05-18 21:42:28
回答 1查看 790关注 0票数 1

考虑一场3回合的比赛。在每一轮中,玩家都会做出选择(存储在变量choice中)。

现在,在第三轮,我想打电话给someFunction,从而访问在第二轮作出的选择。

不幸的是,someFunction返回None。我不明白为什么。如果我把函数调用放在一个模板文件中,一切都会很好。

我已经找了好几个小时了。

代码语言:javascript
复制
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

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-29 18:57:13

before_session_starts函数在会话开始之前执行(因此它的名称)。因此,当它被执行时,玩家还没有完成他/她的选择。这就是为什么someFunction不返回的原因。

您可以在第二轮结束时设置player.participant.vars['someKey'] = self.player.choice,这将给您正在寻找的结果。

代码语言:javascript
复制
class Choice(Page):
    def before_next_page(self):
        if self.player.round_number == 2:
            player.participant.vars['someKey'] = self.player.choice
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44058225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档