#1 by ParetoDeficiente
I want to design a two-round bank run experiment with two banks: A and B. I designed it as depositors from bank A being the treatment group. So...
First, I added a participant field in settings:
"PARTICIPANT_FIELDS = ['treatment']"
Second, I set 2 rounds and, e.g., 10 players by group. In addition, I created two constants called "A_WITHDRAWALS" and "B_WITHDRAWALS", both integers.
Third, I created a treatment group (they will be depositors from bank A while the control will be depositors from bank B) in subsession such that the players are the same across rounds (i.e., participants):
def creating_session(subsession):
import random
if subsession.round_number == 1:
for player in subsession.get_players():
participant = player.participant
participant.treatment = random.choice(['Bank A', 'Bank B'])
Fourth, I created the following function in Group:
def set_payoffs(group):
players = group.get_players()
A_WITHDRAWALS = []
B_WITHDRAWALS = []
for p in players:
if p.treatment == 'Bank A':
A_WITHDRAWALS.append(p)
print(A_WITHDRAWALS)
else:
B_WITHDRAWALS.append(p)
print(B_WITHDRAWALS)
Fifth, I created a boolean field in Player called "withdrawal" such that if the player answer 'Yes', they withdraw their money from the bank. Otherwise, they do not withdraw.
Finally, in the first page I wrote:
<p> You are a depositor from {{ treatment }}. </p>
However, I got the following error: AttributeError: 'Participant' object has no attribute 'treatment'
If I delete the aforementioned sentence, the game runs perfectly. What is left? Maybe I need another field in Player?