Does Python have “private” variables in classes?

Ich komme aus der Java-Welt und lese Bruce Eckels 'Python 3 Muster, Rezepte und Redewendungen.

Beim Lesen von Klassen heißt es weiter, dass in Python keine Instanzvariablen deklariert werden müssen. Verwenden Sie sie einfach im Konstruktor, und schon sind sie da.

Also zum Beispiel:

class Simple:
    def __init__(self, s):
        print("inside the simple constructor")
        self.s = s

    def show(self):
        print(self.s)

    def showMsg(self, msg):
        print(msg + ':', self.show())

Wenn das stimmt, dann jedes Objekt der KlasseSimple kann nur den Wert der Variablen änderns außerhalb der Klasse.

Zum Beispiel:

if __name__ == "__main__":
    x = Simple("constructor argument")
    x.s = "test15" # this changes the value
    x.show()
    x.showMsg("A message")

In Java wurden uns öffentliche / private / geschützte Variablen beigebracht. Diese Schlüsselwörter sind sinnvoll, da manchmal Variablen in einer Klasse gewünscht werden, auf die niemand außerhalb der Klasse Zugriff hat.

Warum ist das in Python nicht erforderlich?

Antworten auf die Frage(11)

Ihre Antwort auf die Frage