Tatsächlich (praktisch) hat Python in Python nichts, was als private Mitgliedsvariable bezeichnet wird. Das Hinzufügen von zwei Unterstreichungen (__) am Anfang macht jedoch eine Variable oder eine Methode privat.
Lassen Sie uns dieses Konzept anhand eines Beispiels verstehen –
privateVar1.py
Live-Demo
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
Im obigen Programm ist __privMeth eine private Methode und __privateVar eine private Variable. Sehen wir uns jetzt die Ausgabe an –
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'
Aus der obigen Ausgabe können wir sehen, dass Sie außerhalb der Klasse „MyClass“ nicht auf die private Methode sowie auf die private Variable zugreifen können. Innerhalb der Klasse (MyClass) können wir jedoch auf die privaten Variablen zugreifen. In der hello() -Methode kann auf die Variable __privateVar zugegriffen werden (wie oben gezeigt: „Private Variable value: 27“).
Aus dem obigen Beispiel können wir also verstehen, dass alle Variablen und Methoden innerhalb der Klasse von der Methode öffentlich sind. Wenn wir Datenelemente als privat deklarieren, bedeutet dies, dass sie nur innerhalb der Klasse und außerhalb der Klasse nicht zugänglich sind. Die Technik, eine Variable oder Methode privat zu machen, wird als Datenmangelung bezeichnet. Jeder Bezeichner des Formulars __spam (mindestens zwei führende Unterstriche, höchstens ein abschließender Unterstrich) wird textlich durch _classname__spam ersetzt, wobei classname der aktuelle Klassenname ist, wobei ein führender Unterstrich entfernt wird. Dieses Mangeln erfolgt ohne Rücksicht auf die syntaktische Position des Bezeichners, solange es innerhalb der Definition einer Klasse auftritt.
Doppelte Unterstrichnamen sollen das versehentliche Überschreiben durch eine Unterklasse vermeiden.