Updating class attributes in python

45 Views Asked by At

I have two classes Player and LineUp, one is used within the other (shown below). I am trying to update my LineUp class after I have already instantiated it.

class Player:
    def __init__(self, player_df):
         self.name = player_df["Name + ID"]
         self.position = player_df["Position"]
         self.salary = player_df["Salary"]
         self.score = player_df["DFS Total"]
         self.game_info = player_df["Game Info"]
         self.team = player_df["TeamAbbrev"]

class LineUp:
    def __init__(self, qb: Player, rb1: Player, rb2: Player, wr1: Player, wr2:Player, wr3: Player, te: Player, flex: Player, dst:Player):
        self.qb = qb
        self.rb1 = rb1
        self.rb2 = rb2
        self.wr1 = wr1
        self.wr2 = wr2
        self.wr3 = wr3
        self.te = te
        self.flex = flex
        self.dst = dst

   def get_salary(self):
    return self.qb.salary + self.rb1.salary + self.rb2.salary + self.wr1.salary + self.wr2.salary + self.wr3.salary + self.te.salary + self.flex.salary + self.dst.salary
    
   def get_total(self):
    return self.qb.score + self.rb1.score + self.rb2.score + self.wr1.score + self.wr2.score + self.wr3.score + self.te.score + self.flex.score + self.dst.score
  
   def __len__(self):
    return 9

   def __getitem__(self, i):
    if i == 0:
        return self.qb
    elif i == 1:
        return self.rb1
    elif i == 2:
        return self.rb2
    elif i == 3:
        return self.wr1
    elif i == 4:
        return self.wr2
    elif i == 5:
        return self.wr3
    elif i == 6:
        return self.te
    elif i == 7:
        return self.flex
    elif i == 8: 
        return self.dst

   def __str__(self):
    return f'{self.qb.name}, {self.rb1.name}, {self.rb2.name}, {self.wr1.name}, {self.wr2.name}, {self.wr3.name}, {self.te.name}, {self.flex.name}, {self.dst.name}'

So I start with a lineup:

my_lineup = LineUp(Player(player1_data), ..., Player(playerX_data))

I then want to update player 1 in my_lineup, so I try to assign

my_lineup[0] = Player(new_player1_data)

Ideally, I'd like to do this by indexing since I am planning to loop through them. For example:

for j in range(len(my_lineup)):
     if x and y and z:
         my_lineup[j] = Player(new_player_data)
     else:
         continue

Now when I print my_lineup I want to see the new player with the rest of the old already assigned players. Basically trying to replace Players in the LineUp while maintaining my_lineup.

0

There are 0 best solutions below