En termes réels (pratiquement), python n’a rien d’appelé variable membre privée en Python. Cependant, l’ajout de deux soulignements (__) au début rend une variable ou une méthode privée est la convention utilisée par la plupart des codes python.
Comprenons ce concept à travers un exemple –
privateVar1.py
Démonstration en direct
class myClass: __privateVar = 27; def __privMeth(self): print("I'm inside class myClass") def hello(self): print("Private Variable value: ",myClass.__privateVar)foo = myClass()foo.hello()foo.__privateMeth
Dans le programme ci-dessus, __privMeth est une méthode privée et __privateVar est une variable privée. Voyons maintenant sa sortie –
Output
Private Variable value: 27Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMethAttributeError: 'myClass' object has no attribute '__privateMeth'
À partir de la sortie ci-dessus, nous pouvons voir qu’en dehors de la classe « myClass”, vous ne pouvez pas accéder à la méthode privée ainsi qu’à la variable privée. Cependant, à l’intérieur de la classe (myClass), nous pouvons accéder aux variables privées. Dans la méthode hello(), la variable __privateVar est accessible (comme indiqué ci-dessus: « Valeur de la variable privée: 27”).
Ainsi, à partir de l’exemple ci-dessus, nous pouvons comprendre que toutes les variables et les méthodes à l’intérieur de la classe sont publiques par la méthode. Lorsque nous déclarons les données membres comme privées, cela signifie qu’elles ne sont accessibles que du côté de la classe et sont inaccessibles en dehors de la classe. La technique consistant à rendre une variable ou une méthode privée s’appelle la modification des données. Tout identifiant de la forme __spam (au moins deux traits de soulignement de début, au plus un trait de soulignement de fin) est textuellement remplacé par _classname__spam, où classname est le nom de classe actuel avec un ou des traits de soulignement de début supprimés. Cette modification se fait sans tenir compte de la position syntaxique de l’identifiant, tant qu’elle intervient dans la définition d’une classe.
Les noms de traits de soulignement doubles sont destinés à éviter le remplacement accidentel par une sous-classe à la place.