Maison > développement back-end > Tutoriel Python > Comment les traits de soulignement simples et doubles affectent-ils la visibilité des variables et des méthodes en Python ?

Comment les traits de soulignement simples et doubles affectent-ils la visibilité des variables et des méthodes en Python ?

Patricia Arquette
Libérer: 2024-12-22 08:19:09
original
850 Les gens l'ont consulté

How Do Single and Double Underscores Affect Variable and Method Visibility in Python?

Démasquer le trait de soulignement : comprendre le trait de soulignement simple et double en Python

En Python, la présence d'un ou deux traits de soulignement avant un identifiant peut modifier sa signification et sa visibilité au sein d'une classe ou d'un module.

Soulignage unique : usage interne Indicateur

Un trait de soulignement signifie qu'un attribut ou une méthode est destiné à un usage interne au sein de la classe actuelle. Cependant, il ne s’agit là que d’une convention ; la confidentialité n’est pas respectée. De plus, des traits de soulignement uniques dans les fonctions du module indiquent qu'ils ne doivent pas être importés par des modules externes.

Double trait de soulignement : modification du nom

Deux traits de soulignement signifient une modification du nom. Ces identifiants sont transformés en interne avec un ClassName ajouté, où ClassName est le nom de la classe actuelle sans les traits de soulignement de début supprimés. Ce mécanisme permet la définition d'instances privées de classe et de variables de classe et offre une certaine protection contre les accès externes. Cependant, il est important de noter que la modification des noms ne garantit pas une confidentialité absolue, car des individus déterminés peuvent toujours accéder à des variables privées.

Exemple :

Considérons la classe suivante :

class MyClass():
    def __init__(self):
        self.__superprivate = "Hello"
        self._semiprivate = ", world!"
Copier après la connexion
  • __superprivate est une variable véritablement privée, accessible uniquement dans l'instance MyClass et non accessible directement depuis à l'extérieur.
  • _semiprivate est classiquement privé mais est accessible directement.

Comme démontré dans l'exemple de sortie, l'accès à __superprivate entraîne directement une AttributeError, tandis que _semiprivate est accessible.

L'attribut __dict__ révèle l'existence à la fois de __superprivate et _semiprivate comme mutilé, confirmant le nom de mécanisme de mutilation.

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