BonjourJe suis débutant en python et je m'entraîne, notament sur les classes. J'ai un problème qui va sans doute vous paraître trivial mais je ne comprend pas une erreur.
J'ai fait une classe Echiquier et Case (ci-dessous) et lorsque je l'utilise (dernières lignes) je crée une instance de Echiquier(), toutes les cases de mon échiquier sont initialisées à "vide". Puis j'essaie de modifier juste 1 case pour y mettre un cavalier noir (par exemple) et il me met la même pièce sur 8 cases.
Je me doute bien que c'est parce qu'il a créé que 8 instances au lieu de 64, et qu'il a réutilisé 8 fois la même référence vers ces instances, mais je ne sais pas pourquoi il a fait ça, et comment résoudre ce genre de problème.
Si vous pouvez m'aider j'attend davantage une explication que la solution à ce cas particulier.
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 piece=["le vide","un pion","un cavalier","un fou","une tour","une dame","le roi"] blanc=[""," blanc"," blanc"," blanc"," blanche"," blanche"," blanc"] noir=[""," noir"," noir"," noir"," noire"," noire"," noir"] class Case : def __init__(self) : self.valeur=0 self.piece=0 def afficher(self) : if self.valeur>0 : couleur=blanc[self.piece] elif self.valeur<0 : couleur=noir[self.piece] else : couleur="" print "Cette case contient "+piece[self.piece]+couleur+" de valeur %s" % (abs(self.valeur)) class Echiquier : def __init__(self) : self.case=[[0]*8]*8 for i in range(8) : for j in range(8) : self.case[i][j]=Case() e=Echiquier() e.case[0][0].piece=2 e.case[0][0].valeur=-3 for i in range(8) : for j in range(8) : e.case[i][j].afficher()
Partager