Lorsque vous rencontrez une "NameError" lors de la tentative d'accès à une variable de classe statique dans une méthode, il devient nécessaire d'ajuster la syntaxe. Voici comment le faire efficacement :
Dans le contexte du code donné :
<code class="python">class Foo(object): bar = 1 def bah(self): print(bar) f = Foo() f.bah()</code>
L'erreur se produit car "bar" est accessible en tant que variable globale dans la méthode "bah". Pour résoudre cela, deux options s'offrent à vous :
1. Accès via attribut de classe (variable statique) :
<code class="python">def bah(self): print(Foo.bar)</code>
Cette syntaxe accède à "bar" en tant que variable statique de la classe "Foo", sans être attachée à une instance spécifique.
2. Accès via l'attribut d'instance :
<code class="python">def bah(self): print(self.bar)</code>
Cette syntaxe accède à "bar" en tant que variable d'instance au sein de la méthode. Les affectations effectuées à "self.bar" créeront des versions spécifiques à l'instance de "bar" pour chaque instance de "Foo".
Remarque supplémentaire :
Vous pouvez également définir l'attribut de classe comme "self.bar" affecte également toutes les instances de la classe :
<code class="python">def bah(self): print(self.bar) self.bar = 2</code>
Dans ce cas, les appels ultérieurs à "bah" pour d'autres instances afficheront "2" car les versions spécifiques à l'instance de Les "bar" sont créés à la volée.
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!