Bonjour,
je débute avec les classes, attributs et méthodes et je bloque vraiment sur un problème
j'appelle l'attribut d'un objet dans une méthode pour l'utiliser ensuite mais je ne souhaite pas que la valeur de l'attribut change pour l'objet appelé, mais ça ne marche pas:
en exemple voici ce que ça donne :
et j'obtiens
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 class Essai(object): def __init__(self): self.a=[] def remplissage(self): self.a=[1,2,3] def methode1(self): I=Essai() b=self.a #j'appelle l'attribut a de l'objet self pour l'utiliser dans la variable b b[2]=1 #je modifie la liste b I.a=b #je donne au nouvel objet I la liste modifiée return I G=Essai() G.remplissage() M=G.methode1() print(G.a) print(M.a)
[1, 2, 1]
[1, 2, 1]
C'est à dire que l'attribut a de l'objet M a aussi changé alors que je ne le souhaite pas.
De plus ceci ne se produit pas si je n'utilise pas des listes mais des nombres
Là j'obtiens
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 class Essai(object): def __init__(self): self.a=[] def remplissage(self): self.a=10 def methode1(self): I=Essai() b=self.a b=5 I.a=b return I G=Essai() G.remplissage() M=G.methode1() print(G.a) print(M.a)
10
5
la valeur 10 est bien resté dans l'objet G même si je m'en sers dans methode1.
Bref, si une âme charitable veut bien m'expliquer, je lui en serais grandement reconnaissant!
Partager