Ich habe eine Klasse, aber jede Methode darin sollte privat sein (abgesehen von __init__
und __str__
). Sollte ich jede Methode mit einem doppelten Unterstrich kennzeichnen, oder wird dies als schlechte Praxis angesehen?
Ich habe eine Klasse, aber jede Methode darin sollte privat sein (abgesehen von __init__
und __str__
). Sollte ich jede Methode mit einem doppelten Unterstrich kennzeichnen, oder wird dies als schlechte Praxis angesehen?
Antworten:
Echte private Methoden - solche, die außerhalb einer Klasse nicht gesehen oder verwendet werden können - existieren in Python nicht. Was wir haben, sind Konventionen, die lediglich Vorschläge sind, Dinge nicht zu berühren, die Sie nicht berühren sollten.
Am nächsten an der Privatsphäre ist das Mangeln von Namen. Ein Attribut von MyClass __some_attr
wird nur _MyClass__some_attr
intern umbenannt , was es etwas umständlich macht, es von außerhalb der Klasse zu referenzieren. Dies wird selten verwendet. Was die meisten Leute tun, ist einfach einen einzelnen Unterstrich ( _attr
) als Präfix voranzustellen, auf das man sich nicht verlassen sollte und der nicht Teil der öffentlichen Schnittstelle ist.
Die Verwendung von doppelten Unterstrichen vor und nach dem Bezeichner ist zwar nicht verboten, wird jedoch für interne Sprachdetails reserviert (wie z. B. "magische" Methoden). Sie sollten sich keine neuen __attr__
s einfallen lassen (es sei denn, Sie hacken den Dolmetscher).
__some_attr
außerhalb der Klasse überhaupt nicht verwiesen wird? Wäre es nicht in Ordnung, einen doppelten führenden Unterstrich zu verwenden?