Python list appending issue -
i ran rather weird problem python list appending today. trying create array each element c struct. 1 of these elements list itself. problematic code:
class players: name='placeholder' squad=list() teams=list() teams.append(players()) teams.append(players()) teams[0].name="abc" teams[1].name="xyz" teams[0].squad.append("joe") w in teams: print(w.name) print(w.squad) the output expected is:
abc ['joe'] xyz [] since added member squad teams[0]. output is:
abc ['joe'] xyz ['joe'] the name set fine .append appended both elements of teams!
what causes , how can work around this?
the reason in class definition, squad , name class variables, not instance variables. when new player object initialized, sharing same squad variable across instances of player. instead, want define __init__ method player class explicitly separates instance-specific variables.
class players: def __init__(self): self.name = 'placeholder' self.squad = [] then, when initialize new player object, has own squad variable. rest of code should work fine now, correct object's squad being appended to.
Comments
Post a Comment