Das self-Schlüsselwort in Python
Dieses Tutorial erklärt den Zweck und die Verwendung des Schlüsselworts self
in Python. In der objektorientierten Programmierung haben wir Klassen, und jede Klasse hat verschiedene Attribute und Methoden. Wann immer ein Objekt oder eine Instanz einer Klasse erzeugt wird, wird der Konstruktor (in Python die Methode __init__()
) aufgerufen, um die Attribute der Instanz zu initialisieren.
Beim Erzeugen einer Instanz einer Klasse müssen wir die Instanzattribute von den Argumenten und anderen Variablen unterscheiden oder angeben. Und dazu brauchen wir das Schlüsselwort self
, um festzulegen, dass wir den Wert an die Instanzattribute und nicht an die lokale Variable oder das Argument mit demselben Namen übergeben.
Angenommen, wir übergeben für eine Klasse car
das Argument color
an die Methode __init__()
, um das Attribut color
der Klasse car
zu initialisieren, dann werden wir das Attribut color
der Instanz als self.color
spezifizieren, was zeigt, dass die Klasse car
ein Attribut color
hat und wir den Wert diesem Attribut zuweisen.
In ähnlicher Weise können wir auch die Instanzmethoden der Klasse mit dem Schlüsselwort self
aufrufen, wie zum Beispiel die Methode self.start()
der Klasse car
. Zusammenfassend können wir also sagen, dass das Schlüsselwort self
dem Anwender erlaubt, die Attribute und Methoden einer Instanz der Klasse anzugeben und darauf zuzugreifen.
Verwendung und Beispielcodes des Schlüsselworts self
in Python
Schauen wir uns nun an, wie das Schlüsselwort self
in Python verwendet wird, um die Methoden und Attribute einer Instanz anhand eines Beispielcodes anzugeben.
Der erste Beispielcode unten demonstriert, wie das Schlüsselwort self
in der Methode __init__()
verwendet wird, um die Attribute der zu initialisierenden Instanz zu initialisieren. Wir müssen keine Variablen deklarieren oder erstellen, bevor wir sie initialisieren oder ihnen Werte zuweisen, so dass wir die Instanzattribute auf folgende Weise initialisieren können:
class car:
def __init__(self, model, color):
self.model = model
self.color = color
mycar = car("model XYZ", "red")
print(mycar.model)
print(mycar.color)
Ausgabe:
model XYZ
red
Wie oben zu sehen ist, wird beim Erzeugen einer neuen Instanz der Klasse automatisch die Methode __init__()
aufgerufen und ihre Attribute werden initialisiert. Um auf die Methoden und Attribute der Instanz zugreifen zu können, muss self
der Parameter der Methode sein.
Der folgende Beispielcode demonstriert, wie man das Schlüsselwort self
verwendet, um die Instanz/Klassenmethoden innerhalb anderer Klassenmethoden in Python aufzurufen.
class car:
def __init__(self, model, color):
self.model = model
self.color = color
self.start()
def start(self):
print(self.model + ", has started!")
mycar = car("model XYZ", "red")
Ausgabe:
model XYZ, has started!
Wie im obigen Beispielcode können wir Klassenmethoden mit dem Schlüsselwort self
aufrufen und auf die Attribute in einer beliebigen Klassenmethode zugreifen, indem wir die Instanz der Klasse als Parameter self
übergeben.