Models
Models
models.py
はアプリケーション内で用いられるデータを定義しているものです.以下の3つからなります.
Subsession
Group
Player
1人のPlayerはグループの構成要員であり,subsessionの一部です.詳細は"Conceptual overview"でご確認ください.
Model fields
models.py
の主な定義は,データベース上における列を定義するものです.以下のような表を作ってみましょう.
name
age
is_student
John
30
False
Alice
22
True
Bob
35
False
...
このようなテーブル構造は,以下のように定義することができます.
otree resetdb
を実行した時,models.py
を分析して,その通りにデータベーステーブルを作成します.(だから,models.py
に追加したり,削除したり,項目に変更を加えた際にresetdb
を実行する必要があります.)
Settng a field's initial/default value
あなたが定義したどんなフィールドも,初期値はNone
であり,何も定義されていません.もし,何らかの初期値を定義したいのであれば,initial =
を使ってください.
min, max. choices
Constants
Constants
クラスは,プレイヤーに共通するアプリケーションのパラメータと定数を設定するのに適したものです.
以下がアプリケーションに必要となる定数です.
name_in_url
:この名前は実験参加者のURLにおいて,アプリケーションを特定するために用いられます.例えば,public_goods
を設定したのであれば,実験参加者のURLは以下のようになります.http://otree-demo.herokuapp.com/p/zuzepona/public_goods/Introduction/1/
players_per_group
:(Groupsの欄で述べます.)num_rounds
:(Roundsの欄で述べます.)
Subsession
以下には,Subsession
オブジェクトの属性とメソッドのリストを示します.
session
session
の中にはsubsession
があります.詳細は"Self"に関する説明を確認してください.
round_number
現在のラウンド数を表示します.ただし,これは複数ラウンド実施するゲーム実験のみに関係します.(Constants.num_roundsで定義されます.)詳細は"Rounds"に関する説明を確認してください.
before_session_starts
creating_session
このメソッドは
before_session_starts
と呼ばれていたものです.詳細はそちらをご確認ください.
このメソッドは管理者が"create session"をクリックした際に実行されます.
creating_session
はplayer
,Groups
,subsessions
などのフィールドを初期値に戻すものです.例は以下のとおりです.
もし,アプリケーションが1ラウンドだけであれば,creating_session
は一度だけ実行されます.もし,アプリケーションがNラウンドあれば,N回実行されます.すなわち,各subsessionに1つずつ必要となるのです.
group_randomly()
group_like_round()
get_group_matrix()
get_groups()
subsessionにおける全てのグループのリストを返します.
get_players()
subsessionにおける全てのプレイヤーのリストを返します.
in_previous_rounds()
in_all_rounds()
in_round(round_number)
in_rounds(self, first, last)
Group
以下には,Group
オブジェクトの属性とメソッドのリストを示します.
sessions/subsession
session
の中にはsubsession
があります.詳細は"Self"に関する説明を確認してください.
get_players()
get_player_by_role(role)
get_player_by_id(id_in_group)
set_players(players_list)
in_previous_rounds()
in_all_rounds()
in_round(round_number)
in_rounds(self, first, last)
Player
以下には,Player
オブジェクトの属性とメソッドのリストを示します.
id_in_group
整数であり,1から始まります.複数人ゲームの場合,この数値はプレイヤー1に割り振られているのか,プレイヤー2に割り振られているのかなどを示します.
payoff
session/subsession/group/participant
get_others_in_group()
get_others_in_subsession()
role()
in_previous_rounds()
in_all_rounds()
in_round(round_number)
in_rounds(self, first, last)
Session
num_participants
そのセッションの参加者の人数を示しています.
config
vars
Participant
vars
label
id_in_session
セッションにおける実験参加者のIDを示しています.このIDはプレイヤーのid_in_subsession
と同じものです.
payoff
payoff_plus_participation_fee
oTreeコードの実行方法
メソッド内にないコードは基本的には全てglobalであり,サーバ起動時に一度だけ実行されます.
一部の人々は新しいセッションが実行される度にコードが実行されると勘違いしているようです.例えば,コイントスで表が出るようなランダム確率を発生させたい人は以下のようなコードをmodels.pyに書くかもしれません.
サーバが起動した時にmodels.pyを起動します.そしてrandom.random()
を一度だけ実行します.そしてランダムな数字,例えば“0.257291”を評価します.
なぜならば,Constants
はglobal変数であり,“0.257291”が全てのセッションにおいて全プレイヤーに共有されます.
同じ理由で,以下のコードも起動しません.
Last updated
Was this helpful?