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

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

Patricia Arquette
Libérer: 2024-11-19 08:13:02
original
429 Les gens l'ont consulté

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'
Copier après la connexion
  • 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal