167 votes

Comment éviter que les données de classe ne soient partagées entre les instances ?

Ce que je veux, c’est ce comportement :

Bien sûr, ce qui se passe vraiment lorsque j’imprime, c’est :

Il est clair qu’ils partagent les données en classe ``. Comment puis-je obtenir des instances distinctes pour obtenir le comportement que je désire ?

169voto

abyx Points 15304

Vous voulez ceci :

La déclaration des variables à l’intérieur de la déclaration de classe en fait des membres de « classe » et non des membres d’instance. En les déclarant à l’intérieur de la `` méthode, vous vous assurez qu’une nouvelle instance des membres est créée à côté de chaque nouvelle instance de l’objet, ce qui est le comportement que vous recherchez.

12voto

jldupont Points 31331

Vous avez déclaré « list » comme une « propriété de niveau de classe » et non « propriété de niveau d’instance ». Pour que les propriétés soient étendues au niveau de l’instance, vous devez les initialiser en les référençant avec le paramètre « self » dans la `` méthode (ou ailleurs selon la situation).

Vous n’avez pas strictement besoin d’initialiser les propriétés d’instance dans la `` méthode, mais cela facilite la compréhension.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X