Comprendre les variables de classe et d'instance en Python
L'un des concepts clés de la programmation orientée objet est la distinction entre les variables de classe et d'instance. En Python, ces variables jouent un rôle crucial dans la gestion des données au sein d'une classe. Cependant, une confusion peut survenir quant à leur comportement en fonction de la façon dont ils sont définis.
Variables de classe et d'instance
Exemple 1 : Variable de classe
<code class="python">class testClass(): list = [] def __init__(self): self.list.append('thing')</code>
Dans cet exemple, la liste La variable est une variable de classe car elle est définie en dehors de toute méthode. Par conséquent, lorsqu'une nouvelle instance de la classe est créée, elle accède à la même variable list et à son contenu. Ainsi, le résultat pour les deux instances (p et f) est :
['thing'] ['thing', 'thing']
Exemple 2 : variable d'instance
<code class="python">class testClass(): def __init__(self): self.list = [] self.list.append('thing')</code>
Dans cet exemple, la variable list est définie dans la méthode __init__(), en utilisant self. Par conséquent, cela devient une variable d’instance. Chaque instance a sa propre variable list distincte. Ainsi, le résultat pour chaque instance est :
['thing'] ['thing']
Résolution de nom pour les variables de classe et d'instance
La clé pour comprendre le comportement des variables de classe et d'instance réside dans comment Python résout les noms. Lorsque vous accédez à self.list, Python vérifie d'abord si un attribut list existe dans l'instance elle-même. S'il n'est pas trouvé, il vérifie ensuite la définition de la classe.
Cela explique pourquoi dans le premier exemple, list est traitée comme une variable de classe, tandis que dans le deuxième exemple, elle devient une instance variable.
En résumé, le placement des définitions de variables dans une classe ou une méthode détermine s'il s'agit de variables de classe ou d'instance. Comprendre cette distinction est crucial pour gérer efficacement les données dans le code Python orienté objet.
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!