In Python wird eine modulprivate Funktion oder Variable benannt _foo
. Wenn es für eine Klasse privat ist, sind es Namen __foo
. Die Mechanik, die dahinter steckt, wie diese funktionieren, ist jedoch für die Frage von geringer Relevanz.
Warum wurden beim Entwurf der Python-Sprache die doppelten Unterstriche für private Klassenmitglieder ausgewählt? Warum nicht einen einzelnen Unterstrich, wie beim Modul privat? Warum nicht ein anderes Zeichen, das sichtbarer ist? (Die Unterscheidung zwischen _ und __ ist schwierig).
Ich bin mir sicher, dass es hier eine Geschichte gibt, aber ich habe Probleme, sie zu finden, weil ich nur Tutorials finde, die mir sagen, was es bedeutet und nicht, warum es so ist.
Antworten:
Python Enhancement Proposal (PEP) 8 erläutert unter anderem die beabsichtigte Bedeutung von Namen mit einfachem und doppeltem Unterstrich. Wie viele der frühen PEPs repräsentiert es Guido van Rossums Vorlieben, und als Pythons anerkannter wohlwollender Diktator für das Leben werden seine Vorlieben im Allgemeinen von der Python-Community befolgt.
Die Verwendung von doppelten Unterstrichen „Magie“ Worte zumindest so weit zurück wie das C - Präprozessor geht , um anzuzeigen, mit dem dieses Übereinkommen in den 1970er Jahren beginnt ( zB ,
__FILE__
,__LINE__
). Dies geschah, weil es keine Symbole gab, die für den Präprozessor nicht zulässig waren. Ein selten verwendetes Namensmuster (mehrere Unterstriche und Großbuchstaben) sorgte praktisch für einen Mangel an Konflikten.quelle