Sessions

oTreeにおいて,sessionとは,複数のプレイヤーが参加している一連のタスク,もしくはゲームのことを指します.以下はsessionの一例です.

多数の参加者が実験室に集まり,公共財ゲームを以下のような質問文による実験を実施します.参加者は10.00ユーロを参加費として受け取り,さらにゲームの結果に応じて報酬を受け取ります.

Subsessions

sessionは複数のsubsessionの集まりです.つまり,subsessionとは,sessionを形作るセクション,もしくはモジュールということです.例えば,公共財ゲームの後にアンケートを実施するとすれば,公共財ゲームはsubsessionの1つ目であり,アンケートはsubsessionの2つ目,ということができます.それぞれのsubsessionは複数の"page"からなります.例えば,公共財ゲームのsubsessionの中に4ページあり,アンケートのsubsessionの中に2ページあるイメージです.

例えば,複数期繰り返すゲームであれば,各期をsubsessionとしてみなすことができます.

Groups

各subsessionはプレイヤーのグループに分けることができます.例えば,30人プレイヤーのsubsessionがあれば,2人組を15グループに分けることができます.

※グループはsubsessionの間でシャッフルすることができます.

Object hierarchy

oTreeには以下のような階層性があります.

Session
       Subsession
          Group
               Player
                 Page
  • sessionとは,subsessionの集合です.

  • subsessionには複数のgroupを含んでいます.

  • groupには,複数のプレイヤーを含んでいます.

  • 各プレイヤーは複数のページで進めていきます.

Participant

oTreeにおいては,"player"と"participant"は違うものです."player"と"participant"の関係は,sessionとsubsessionの関係と同じようなものです.

playerは特定のsubsessionにおけるparticipantの呼び方です.playerはparticipantが果たす一時的な役のようなものです.あるparticipantは最初のsubsessionでplayer2に割り振られた後に,次のsubsessionではplayer1に割り振られると言ったようなものです.

What is "self"?

Pythonにおいて,selfは現在あなたが使用しているクラスのインスタンスを示しています.もし,今までにselfがある文脈においてどのような役割を果たしているのかわからなければ,classの名前を見つけるまでスクロールアップしてください.

以下の例では,selfplayerオブジェクトを反映しています.

class Player(object):

    def my_method(self):
        return self.my_field

次の例では,selfGroupオブジェクトを反映しています.

class Group(object):

    def my_method(self):
            return self.my_field

selfは概念的には,meという言葉と同様の意味です.あなたはあなた自身をmeと呼んでいますが,他の人はあなたのことをあなたの名前で呼んでいます.そして,あなたの友達がmeという言葉を言った時には,あなたがmeという言葉を言った時とは違うことを意味しています.

例えば,もしあなたがplayerクラスにいる場合,そのplayerのpayoffはself.payoffとして示すことができます.(なぜならば,selfはplayerを意味しているからです).しかし,もしあなたがviews.pyの中にあるPageクラスにいる場合,同じことを意味するには,self.player.payoffになります.ポインタはpageからplayerに移動します.

Self: extended examples

以下にはいくつかのコードの例を紹介します.

class Session(...) # this class is defined in oTree-core
    def example(self):

        # current session object
        self

        self.config

        # child objects
        self.get_subsessions()
        self.get_participants()

class Participant(...) # this class is defined in oTree-core
    def example(self):

        # current participant object
        self

        # parent objects
        self.session

        # child objects
        self.get_players()

そして,models.pyは以下の通りです.

class Subsession(BaseSubsession):
    def example(self):

        # current subsession object
        self

        # parent objects
        self.session

        # child objects
        self.get_groups()
        self.get_players()

        # accessing previous Subsession objects
        self.in_previous_rounds()
        self.in_all_rounds()

class Group(BaseGroup):
    def example(self):

        # current group object
        self

        # parent objects
        self.session
        self.subsession

        # child objects
        self.get_players()

class Player(BasePlayer):

    def example(self):

        # current player object
        self

        # method you defined on the current object
        self.my_custom_method()

        # parent objects
        self.session
        self.subsession
        self.group
        self.participant

        self.session.config

        # accessing previous player objects
        self.in_previous_rounds()

        # equivalent to self.in_previous_rounds() + [self]
        self.in_all_rounds()

最後に,views.pyは以下の通りです.

class MyPage(Page):
    def example(self):

       # current page object
       self

       # parent objects
        self.session
        self.subsession
       self.group
        self.player
         self.participant
         self.session.config

https://otree.readthedocs.io/en/latest/conceptual_overview.html

Last updated