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