Mögliche Duplizieren:
private members in pythonsimulieren private Variablen in Python
ich einige Variablen habe ich möchte verstecken wirklich, weil sie außerhalb meiner Klasse nicht gehören. Auch alle solche nicht dokumentierten Variablen machen die Vererbung unbrauchbar.
Wie verbergen Sie solche Variablen, die Sie nicht außerhalb Ihres Objekts anzeigen möchten?
Um zu klären, warum ich Variablen private Variablen, zuerst ein Beispiel, wo die Unfähigkeit zu verstecken ist nur eine Unannehmlichkeit, dann eine andere, das ist wirklich ein Problem benötigen:
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 den Zugang der Länge 'des Gegenstandes hier. Es ist nur eine Unannehmlichkeit und nichts Schreckliches.
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, ich will die Umsetzung eines Tages ändern .. Die Chancen sind, es wird etwas brechen, wenn ich wirklich die Umsetzung Besonderheiten begraben haben.
Ich nehme es als jemand programmieren könnte. Dieses "irgendjemand" kann eine nützliche Sache von meinen Implementierungsspezifika finden und sie benutzen, selbst wenn ich davon stark abgeraten hätte! Es wäre viel einfacher zu sagen: "Nein, es ist nicht da, probier etwas anderes."
Sie wollen die Variablen nicht erben, korrigieren? –
Paul: Korrekt .. – Cheery
Python macht keine Knechtschaft und Dominanz wie einige Sprachen. Wenn Sie nicht aufhören können, '_method' oder' _datum' zu verwenden (siehe DrDee unten), verdienen Sie, was Sie bekommen (oder nicht bekommen (oder brechen)). – msw