Diese Konvention wird für spezielle Variablen oder Methoden (sogenannte "magische Methoden") verwendet, wie z.B. __init__
y __len__
. Diese Methoden bieten besondere syntaktische Merkmale oder führen besondere Aufgaben aus.
Zum Beispiel, __file__
gibt den Speicherort der Python-Datei an, __eq__
wird ausgeführt, wenn a == b
Ausdruck ausgeführt wird.
Ein Benutzer kann natürlich eine benutzerdefinierte spezielle Methode erstellen, was ein sehr seltener Fall ist, aber oft kann er einige der eingebauten speziellen Methoden ändern (z.B. sollten Sie die Klasse mit __init__
die als erstes ausgeführt wird, wenn eine Instanz einer Klasse erstellt wird).
class A:
def __init__(self, a): # use special method '__init__' for initializing
self.a = a
def __custom__(self): # custom special method. you might almost do not use it
pass
11 Stimmen
@AustinHenley: Nicht für doppelte Unterstreichungen vor und nach den Namen. Sie denken dabei nur an Unterstriche vor den Namen.
2 Stimmen
Verwandt: "Was ist der historische Grund, warum Python den doppelten Unterstrich für Class Private Members verwendet?" .
4 Stimmen
Mögliches Duplikat von Welche Bedeutung haben eine einfache und eine doppelte Unterstreichung vor einem Objektnamen?
1 Stimmen
@MackM Beachten Sie, dass in dieser Frage nach Unterstrichen gefragt wird vorher und nachher der Name, und das von Ihnen vorgeschlagene doppelte Ziel fragt nur nach Unterstrichen vor den Namen. Allerdings gebe ich zu, dass einige der Antworten dort auch diesen Fall abdecken.