simulieren private Variablen in Python [duplizieren]

Mögliches Duplizieren:
private Mitglieder in Python

Ich habe ein paar Variablen, die ich wirklich verstecken möchte, weil sie nicht außerhalb meiner Klasse liegen. Außerdem machen all diese nicht dokumentierten Variablen die Vererbung unbrauchbar.

Wie verbergen Sie solche Variablen, die Sie nicht außerhalb Ihres Objekts anzeigen möchten?

Um zu verdeutlichen, warum ich private Variablen benötige, ist zunächst ein Beispiel, in dem die Unfähigkeit, Variablen auszublenden, nur eine Unannehmlichkeit ist, und dann ein anderes, das wirklich ein Problem darstellt:

class MyObject(object):
    def __init__(self, length):
        self.length = length
    def __len__(self):
        return length

item = MyObject(5)
item.length
len(item)

So habe ich zwei Möglichkeiten, um hier auf die 'Länge' des Artikels zuzugreifen. Es ist nur eine Unannehmlichkeit und nichts Schlimmes.

from wares import ImplementationSpecific

class MyThing(object):
    def __init__(self):
        self.__no_access_even_if_useful = ImplementationSpecific()
    def restricted_access(self):
        return self.__no_access_even_if_useful.mutable_value

thing = MyThing()
thing.restricted_access()
thing._MyThing__no_access_even_if_useful.something_useful_for_someone()

So sagen Sie, ich möchte die Implementierung eines Tages ändern. Die Chancen stehen gut, dass etwas kaputt geht, wenn ich die Implementierungsspezifikationen nicht wirklich vergraben habe.

Ich nehme es als könnte jeder programmieren. Dass "jeder" eine nützliche Sache aus meinen Implementierungsspezifikationen herausfinden und verwenden kann, auch wenn ich davon dringend abgeraten hätte! Es wäre viel einfacher zu sagen: "Nein, es ist nicht da, probiere etwas anderes."

Antworten auf die Frage(4)

Ihre Antwort auf die Frage