Je voudrais prendre une liste de joueurs de football (qui ont peu d'attributs comme le nom, les buts, le club ...) et les ajouter à leur club (qui est une autre classe) mais il semble qu'il me manque quelque chose parce que la liste des joueurs du club change dans la boucle même si elle n'est pas appelée (je pense que je ne gère pas correctement les instances des joueurs).Générer la liste des instances en Python
Alors, voici le code:
clubsWithGoal = []
class Player:
nickname = ""
imageURL = ""
numberOfGoal = 0
clubId = ""
def __init__(self, nickname, imageURL, clubId, numberOfGoal = 0):
self.nickname = nickname
self.imageURL = imageURL
self.clubId = clubId
self.numberOfGoal = numberOfGoal
def __str__(self):
return self.nickname
class Club:
Name = ""
ImageURL = u""
id = u""
numberOfGoal = 0
listOfPlayer = []
def __init__(self, id):
del self.listOfPlayer [:]
self.id = id
self.getData()
def __str__(self):
return self.Name
def getData(self):
try:
results = json.load(urllib.urlopen(
"http://worldcup.kimonolabs.com/api/clubs/" + self.id + "?apikey={youwon'tseeit}"))
self.ImageURL = results["logo"]
self.Name = results["name"]
except:
print(self.id)
def addGoal(self, numberOfGoalsToAdd):
self.numberOfGoal += numberOfGoalsToAdd
def addPlayer(self, player):
self.listOfPlayer.append(player)
print("added "+player.nickname+" to "+self.Name)
self.addGoal(player.numberOfGoal)
print("added the "+str(player.numberOfGoal)+" of "+player.nickname+" to "+self.Name)
Voici donc pour la classe modèle et est la fonction ici qui doit trier les joueurs et ne fonctionne pas:
def createAndOrderInClub(playerlist):
foundHisClub = False
for player in playerlist:
for club in clubsWithGoal:
# Case 1: The club already exists and the player is part of the club
if player.clubId == club.id:
club.addPlayer(player)
foundHisClub = True
break
# Case 2: The club doesn't already exist
if (foundHisClub == False):
newclub = Club(player.clubId)
newclub.addPlayer(player)
clubsWithGoal.append(newclub)
Et un exemple que cela change à l'intérieur de la boucle (je suis développeur java et nouveau pour Python):
Peut-être lié: http://stackoverflow.com/q/1680528/3001761 – jonrsharpe
Oui, c'est double réponse: la réponse est la même, mais il était tout à fait compliqué de deviner que le problème était le même (au moins pour moi), désolé. –