首页 > 编程知识 正文

otree 教程,旅游的概念性定义

时间:2023-05-03 21:43:44 阅读:277910 作者:3980

概念概述

Sessions

在oTree中,会话是指多个参与者参与一系列任务或游戏的事件。会话的一个例子是:

“许多参与者将来到实验室并进行公共产品游戏,然后进行问卷调查。参与者获得的奖金为10.00欧元,加上他们从游戏中获得的收入。“

Subsessions

会话是一系列的子会话; 子会话是构成会话的“部分”或“模块”。例如,如果一个会话由一个公共产品游戏和一个问卷调查组成,那么公共产品游戏将是子会话1,而调查问卷将是一个子会话2.反过来,每个子会话都是一系列页面。例如,如果你有一个4页的公共产品游戏,然后是一个2页的问卷:

如果游戏重复多轮,则每轮都是一个子会话。

Groups

每个子会话可以进一步划分为一组玩家; 例如,你可以拥有30名玩家,分为15组,每组2名玩家。(注意:组可以在子会话之间进行混洗。)

Object hierarchy(对象层次结构)

oTree的实体可以安排在以下层次结构中:

会话是一系列子会话子会话包含多个组一组包含多个玩家每个玩家通过多个页面进行

Participant

在oTree中,术语“玩家”和“参与者”具有不同的含义。参与者和玩家之间的关系与会话和子会话之间的关系相同:

玩家是一个特定子级别中的参与者的实例。玩家就像是参与者扮演的临时“角色”。参与者可以是第一个子赛中的球员2,下一个赛季中的球员1等。

What is “self”?

在Python中,self是您当前所在类的实例。如果您想知道self特定上下文中的含义,请向上滚动,直到看到该类的名称。

例如,在此代码中,self是一个玩家(Player该类的一个实例)。

这个名字self比player它更短更方便。

这类似于人们在谈论自己时不使用自己的名字的方式; 他们只使用“我”,“我自己”和“我”之类的代词。所以,self基本上是一个代名词。

Functions vs. attributes

类具有属性功能

以下是具有属性的页面示例

这意味着此页面的时间限制为60秒。

但是,如果您希望时间限制是动态的呢?也许它应该取决于当前的轮数,或者取决于玩家到目前为止的表现。

要解决这个问题,我们需要使它成为当前页面的函数,如下所示:

首先,让我们看一下def get_timeout_seconds(self)行: def意味着我们定义了一个名为get_timeout_seconds的函数。它是一个函数,因此它具有输入和输出。 输入(即参数)称为self,它是页面的当前实例。“实例”是什么意思? 虽然许多玩家会多次查看“Results”页面,但是self具有关于当前页面视图的特定属性。例如,self.round_number为我们提供当前的轮数,self.player为我们提供当前正在查看页面的玩家,self.session为我们提供了当前正在进行的会话。

总之,如果你定义一个属性,那么它对所有玩家都是一样的。 如果你想要一个与玩家不同的东西,你需要使用一个带参数self的函数。 有时,oTree提供两种选择。 例如,oTree提供timeout_seconds属性(对于具有固定时间限制的简单页面)和get_timeout_seconds函数(对于具有动态时间限制的复杂页面)。

 

Self: extended examples(Self:扩展示例)

您可以访问哪些属性self?

下面是一个如何在代码中引用层次结构中的对象的图表:

例如,如果您使用的是Player类中的方法,则可以使用self.payoff访问玩家的回报(因为self是玩家)。 但是如果你在pages.py中的Page类中,则等效表达式是self.player.payoff,它将指针从“page”遍历到“player”。

以下是一些代码示例:

在你的 models.py

在你的 pages.py

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。