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 ?

Dec 22, 2024 am 08:19 AM

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Apr 02, 2025 am 07:15 AM

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment obtenir des données d'information en contournant le mécanisme anti-frawler d'Investing.com? Comment obtenir des données d'information en contournant le mécanisme anti-frawler d'Investing.com? Apr 02, 2025 am 07:03 AM

Comprendre la stratégie anti-rampe d'investissement.com, Beaucoup de gens essaient souvent de ramper les données d'actualités sur Investing.com (https://cn.investing.com/news/latest-news) ...

Python 3.6 Chargement du fichier de cornichon MODULENOTFOUNDERROR: Que dois-je faire si je charge le fichier de cornichon '__builtin__'? Python 3.6 Chargement du fichier de cornichon MODULENOTFOUNDERROR: Que dois-je faire si je charge le fichier de cornichon '__builtin__'? Apr 02, 2025 am 06:27 AM

Chargement du fichier de cornichon dans Python 3.6 Erreur d'environnement: modulenotFounonError: NomoduLenamed ...

Quelle est la raison pour laquelle les fichiers de pipeline ne peuvent pas être écrits lors de l'utilisation du robot Scapy? Quelle est la raison pour laquelle les fichiers de pipeline ne peuvent pas être écrits lors de l'utilisation du robot Scapy? Apr 02, 2025 am 06:45 AM

Discussion sur les raisons pour lesquelles les fichiers de pipelines ne peuvent pas être écrits lors de l'utilisation de robots scapisnels lors de l'apprentissage et de l'utilisation de Crawlers scapides pour un stockage de données persistant, vous pouvez rencontrer des fichiers de pipeline ...

See all articles