Python newbie here. I ran into some unexpected behavior using class variables home_team
and away_team
(See below).
class GameTeam():
def __init__(self, prev_game=None, prev_result=None, wins=0, losses=0):
self.prev_game = prev_game
self.prev_result = prev_result
self.wins = wins
self.losses = losses
class Game1():
home_team = GameTeam()
away_team = GameTeam()
def __init__(self, game_num):
self.game_num = game_num
def __str__(self):
return str(self.game_num)
def __repr__(self):
return str(self)
game11 = Game1(1)
game12 = Game1(2)
game11.away_team.losses = game11.away_team.losses + 1
game12.away_team.losses = game12.away_team.losses + 1
print(game11.away_team.losses) #Result is 2
print(game12.away_team.losses) #Result is 2
However, if I initialize home_team
and away_team
in the __init__()
method, I get the result I expected
class GameTeam():
def __init__(self, prev_game=None, prev_result=None, wins=0, losses=0):
self.prev_game = prev_game
self.prev_result = prev_result
self.wins = wins
self.losses = losses
class Game2():
def __init__(self, game_num):
self.game_num = game_num
self.home_team = GameTeam()
self.away_team = GameTeam()
def __str__(self):
return str(self.game_num)
def __repr__(self):
return str(self)
game21 = Game2(1)
game22 = Game2(2)
game21.away_team.losses = game21.away_team.losses + 1
game22.away_team.losses = game22.away_team.losses + 1
print(game21.away_team.losses) #Returns 1
print(game22.away_team.losses) #Returns 1
Can someone explain to me what's going on here or point me to the section of the docs explaining this?