Surmonter le problème des données de classe partagées
Dans la programmation orientée objet, il est souhaitable de conserver les données de classe distinctes pour chaque instance. Cependant, un problème courant survient lorsque des données de classe sont accidentellement partagées entre instances, ce qui entraîne un comportement inattendu.
Le problème :
Considérez le code suivant :
class a: list = [] x = a() y = a() x.list.append(1) y.list.append(2) x.list.append(3) y.list.append(4) print(x.list) # prints [1, 2, 3, 4] print(y.list) # prints [1, 2, 3, 4]
Dans cet exemple, les instances x et y de la classe a partagent la même liste. Par conséquent, l'ajout d'éléments à x.list les ajoute également à y.list, violant ainsi le comportement prévu.
La solution :
Pour empêcher le partage des données de classe, les membres de l'instance doivent être déclarés dans des méthodes d'instance individuelles au lieu de la déclaration de classe. En Python, la méthode __init__ est couramment utilisée à cette fin.
class a: def __init__(self): self.list = []
En initialisant la variable list dans la méthode __init__, chaque instance de a aura sa propre copie indépendante de la liste.
Comportement attendu :
Avec cette modification, le comportement prévu peut être atteint :
x = a() y = a() x.list.append(1) y.list.append(2) x.list.append(3) y.list.append(4) print(x.list) # prints [1, 3] print(y.list) # prints [2, 4]
La séparation des données de classe à l'aide de cette approche garantit que chaque instance possède son propre ensemble unique de données, éliminant ainsi le problème des données partagées entre les instances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!