Maison  >  Article  >  développement back-end  >  Comment fonctionnent les portées de variables dans les classes Python ?

Comment fonctionnent les portées de variables dans les classes Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-19 08:13:02375parcourir

How do variable scopes work within Python classes?

Portées des variables dans les classes Python

Variation de la portée

Dans les classes Python, la portée des variables varie en fonction de l'endroit où ils sont déclarés :

  • Variables au niveau de la classe (fonctions extérieures) : Accessible à toutes les fonctions de classe (variables publiques).
  • Variables locales de fonction (à l'intérieur des fonctions de classe) : Restreint à cette fonction spécifique (dans sa portée) .

self vs. Global Variables

Déclarer une variable avec self.(nom de la variable) dans une fonction de classe le rend également accessible à toutes les fonctions de classe. Cependant, contrairement aux variables globales, ces variables sont spécifiques à l'instance actuelle et ne remplacent pas les variables au niveau de la classe.

Nuances supplémentaires

  • Unique vs. Préfixe double trait de soulignement : Les variables commençant par un seul trait de soulignement (par exemple, _variable) sont considérées comme protégées et ne doivent être consultées que au sein de la classe. Les variables commençant par des traits de soulignement doubles (par exemple, __variable) sont mutilées et effectivement privées.
  • Variables locales : Les variables déclarées dans les fonctions de classe sont locales à ces fonctions et n'affectent pas la classe. scope.

Exemple

Considérez la classe suivante :

class Test:
    a = None
    b = None

    def __init__(self, a):
        print(self.a)
        self.a = a
        self._x = 123
        self.__y = 123
        b = 'meow'
  • a et b sont des variables de niveau classe accessibles de n'importe quelle instance.
  • a est remplacé par le self.a spécifique à l'instance dans __init__.
  • _x est protégé et ne fait pas partie de l'API publique.
  • __y est mutilé et privé pour la classe.
  • b est une variable locale accessible uniquement dans __init__.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn