Lorsque vous travaillez avec des classes en Python, vous pouvez rencontrer des cas où vous devez accéder aux variables de classe à partir des méthodes. Cependant, le simple fait de référencer la variable dans la méthode peut entraîner une erreur NameError.
Le problème
Considérez l'extrait de code suivant :
<code class="python">class Foo(object): bar = 1 def bah(self): print(bar)</code>
Lorsque vous essayez d'exécuter ce code, vous rencontrerez une erreur NameError : le nom global 'bar' n'est pas défini. En effet, la variable bar est une variable de classe et la méthode bah ne peut pas y accéder directement.
La solution
Pour accéder aux variables de classe dans les méthodes, il y a deux options :
Si vous avez l'intention de modifier la variable de classe, utilisez Foo.bar ; sinon, utilisez self.bar.
Exemple
Refactoriser l'extrait de code en utilisant la bonne approche :
<code class="python">class Foo(object): bar = 1 def bah(self): print(self.bar) # Access the instance variable f = Foo() f.bah() # Prints 1</code>
Ce code imprimera 1, accéder à la variable d'instance. Si vous souhaitez accéder à la variable de classe, remplacez simplement self.bar par Foo.bar dans l'instruction print.
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!