Bonjour,
Je suis confronté à une attitude de l'interpreteur que je ne comprend pas. Je me suis mis à Python il y a quelque temps et j'arrive maintenant à obtenir des resultats sympathique. Toutefois j'ai l'impression qu'il y a toujours certaines nuances qui m'echappent.
Dernièrement je me suis retrouvé confronté à un problème que je n'arrive pas à résoudre. Je ne vous remet pas tout le code mais simplement un code exemple qui recréé le comportement que je ne comprend pas.
Le resultat pour ce petit script est le suivant:
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
31
32
33
34 class Test(): __Data__ = {} def __init__(self, list): self.treatL(list) def returnD(self): return self.__Data__ def treatL(self, list): for i in range(len(list)): self.__Data__[list[i]]=i if __name__ == "__main__": l1 = ['1', '2'] l2 = ['3','4','5','6','7','8'] toto = Test(l1) dic = toto.returnD() print "premiere liste :" for k in dic.keys(): print k titi = Test(l2) serie2 = titi.returnD() print "deuxieme liste :" for k in serie2.keys(): print k print "premiere liste a nouveau :" for k in dic.keys(): print k
Premierement, la variable serie2 ce retrouve avec les clés 1 et 2. Il semblerait qu'on utilise pas une nouvelle instance de l'objet Test mais que les données précédentes sont toujours présentes.
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 premiere liste : 1 2 deuxieme liste : 1 3 2 5 4 7 6 8 premiere liste a nouveau : 1 3 2 5 4 7 6 8
Ca me semble déjà relativement étrange. Mais la ou je suis complètement perdu, c'est lorsque ma variable dic qui était bien positionné se retrouve avec la valeur de serie2 sans que je l'ai touchée...
Il s'agit certainement d'une petite notion en python que je ne connais pas, mais la j'avou que je suis perdu. Un expert python pourrait t'il m'eclairer sur le sujet ?
PS : j'utilise pythonwin 2.6.1.
Merci,
Partager