In Python gibt es keine "privaten" Instanzvariablen, auf die nur innerhalb eines Objekts zugegriffen werden kann.

Ich habe es überprüft, weil es ein paar Dinge gab

python


# -*- coding: utf-8 -*-

class Hoge(object):

    def __init__(self):

        self.__foo = 'foo'
        self._bar = 'bar'


hoge = Hoge()

# AttributeError: 'Hoge' object has no attribute '__foo'
# print hoge.__foo

print hoge._bar
print hoge._Hoge__foo

print hoge.__dict__

Ausführungsergebnis

bar foo {'_Hoge__foo': 'foo', '_bar': 'bar'}

Irgendwie ist Hoge .__ foo ein privates Eigentum. Es wird gesagt, dass sich die Eigenschaft mit zwei Unscos wie privat verhält, da das Mandaring von Namen durchgeführt wird.

Es scheint, dass das Ausblenden von Variablen nicht der Hauptzweck ist, also werde ich es vorerst in meinen Kopf setzen.

Beachten Sie, dass die Schwierigkeitsregeln in erster Linie Unfälle verhindern sollen. Es ist weiterhin möglich, auf überzeugende Weise auf Variablen zuzugreifen und diese zu ändern, die als privat gelten. ist. Diese Spezifikation ist sogar in speziellen Situationen wie Debuggern nützlich.

http://docs.python.jp/2/tutorial/classes.html#tut-private

Recommended Posts

In Python gibt es keine "privaten" Instanzvariablen, auf die nur innerhalb eines Objekts zugegriffen werden kann.
Richten Sie einen FTP-Server ein, der sofort erstellt und zerstört werden kann (in Python).
Ein Mechanismus zum Aufrufen von Ruby-Methoden aus Python, der in 200 Zeilen ausgeführt werden kann
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Erstellen Sie eine Instanz einer vordefinierten Klasse aus einer Zeichenfolge in Python
[Python] Es scheint, dass globale Variablen in Multiprocessing nicht referenziert werden können
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
In Python gibt es keinen Schalter
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten