Dieses "Unterstreichen" scheint häufig vorzukommen, und ich habe mich gefragt, ob dies eine Anforderung in der Python-Sprache oder nur eine Frage der Konvention ist.
Könnte jemand auch benennen und erklären, welche Funktionen die Unterstriche haben und warum ( __init__
zum Beispiel)?
python
function
methods
double-underscore
Chuck Testa
quelle
quelle
Antworten:
Aus dem Python PEP 8 - Style Guide für Python-Code :
Beachten Sie, dass Namen mit doppelt führenden und nachfolgenden Unterstrichen im Wesentlichen Python selbst vorbehalten sind: "Erfinden Sie solche Namen niemals, verwenden Sie sie nur wie dokumentiert".
quelle
__double_leading_underscore
ist nach wie vor der Öffentlichkeit , wird die Variable einfach umbenannt einen Zusammenstoß zu vermeiden.Die anderen Befragten beschreiben die doppelt führenden und nachfolgenden Unterstriche zu Recht als Namenskonvention für "spezielle" oder "magische" Methoden.
Während Sie diese Methoden direkt aufrufen können (
[10, 20].__len__()
zum Beispiel), ist das Vorhandensein der Unterstriche ein Hinweis darauf, dass diese Methoden indirekt aufgerufen werden sollen (len([10, 20])
zum Beispiel). Den meisten Python-Operatoren ist eine "magische" Methode zugeordnet (z. B.a[x]
die übliche Methode zum Aufrufena.__getitem__(x)
).quelle
Namen, die von doppelten Unterstrichen umgeben sind, sind für Python "besonders". Sie sind in der Python-Sprachreferenz, Abschnitt 3, "Datenmodell" aufgeführt .
quelle
Eigentlich verwende ich _ Methodennamen, wenn ich zwischen übergeordneten und untergeordneten Klassennamen unterscheiden muss. Ich habe einige Codes gelesen, die diese Art der Erstellung von Eltern-Kind-Klassen verwendeten. Als Beispiel kann ich diesen Code bereitstellen:
...
und das Kind, das eine _worker-Methode hat
...
quelle
Diese Konvention wird für spezielle Variablen oder Methoden (sogenannte „magische Methode“) wie
__init__
und verwendet__len__
. Diese Methoden bieten spezielle syntaktische Funktionen oder führen spezielle Aktionen aus.Gibt beispielsweise
__file__
den Speicherort der Python-Datei an und__eq__
wird ausgeführt, wenn dera == b
Ausdruck ausgeführt wird.Ein Benutzer kann natürlich eine benutzerdefinierte spezielle Methode
__init__
erstellen , was ein sehr seltener Fall ist, aber häufig einige der integrierten speziellen Methoden ändert (z. B. sollten Sie die Klasse damit initialisieren , die zuerst ausgeführt wird, wenn eine Instanz einer Klasse ausgeführt wird geschaffen).quelle
Es wurde ein Beispiel hinzugefügt, um die Verwendung von __ in Python zu verstehen. Hier ist die Liste aller __
https://docs.python.org/3/genindex-all.html#_
Zugriffsbeschränkung mit __
quelle