Python – Erbauer

In Python gibt es sogenannte “magische” Methoden, dh Methoden, die aufgebaut sind und einen speziellen Namen haben und die nur unter bestimmten Umständen aufgerufen werden, da der direkte Aufruf dieser Methoden im Rahmen eines Programms nicht üblich ist.

Bauherren

Die Methode __init__ fungiert als Konstruktor, dh, sie initialisiert eine Reihe von Attributen und führt den Code aus, den wir beim Erstellen eines Objekts der Klasse definiert haben, wenn es “__init__” mit zwei Unterstrichen heißt Am Anfang und Ende des Wortes init haben Sie die passende Syntax für Python, um es als “magische” Methode zu betrachten und zu wissen, dass es ausgeführt werden muss, wenn eine Instanz der Klasse erstellt wird.

Der Konstruktor erreicht Folgendes, um ein Objekt zu initialisieren:

 >>> f = FooBar () >>> f.init () 

Wenn Sie diesen Code bereits platzieren, initialisiert das Objekt seine Attribute nur mit:

 >>> f = FooBar () 

Wie Sie sehen, ist es eine wichtige Einsparung beim Codieren und eine Hilfe, wenn wir vergessen, das Objekt zu initialisieren.

Konstruktor erstellen

Das Erstellen des Konstruktors in Python ist recht einfach. Wir müssen nur die Methode definieren und hinzufügen, dass dies beim Erstellen des Objekts erfolgen muss. Sehen wir uns ein Beispiel an:

python_constructor1.jpg

Im Bild sehen wir die definierte Methode und in dem, was wir ausführen müssen, stellen wir fest, dass sie das somevar- Attribut definiert und gleich 42 ist. Sehen wir uns ein Beispiel an, wie ein Objekt dieser Klasse ausgeführt würde:

python_constructor2.jpg

In dem Bild sehen wir, dass bereits zum Zeitpunkt der Definition des Objekts f vom Typ FooBar initialisiert wird und beim Zugriff auf dessen Attribution somevar den Wert 42 ausgibt, der im Konstruktor definiert ist.

See also  MySQL Trigger oder Trigger - Definieren von Ereignissen und Momenten

Was passiert nun, wenn die Attribute dynamisch gestartet werden sollen? Wir schreiben die Methode folgendermaßen um:

 Klasse FooBar: def __init __ (self, value = 42): self.somevar = value 

Mit dem optionalen Parameter können wir einen Wert übergeben. Wenn wir ihn nicht übergeben, wird 42 als Standardwert verwendet.
Die Ausführung des Programms wäre wie folgt:

 >>> f = FooBar ('Dies ist ein Konstruktorargument') >>> f.somevar 'Dies ist ein Konstruktorargument' 

Auf diese Weise haben wir unseren Konstruktor dynamisiert, sodass wir unseren Objekten je nach Bedarf innerhalb des Programms unterschiedliche Attribute zuweisen können.

Konstruktor überschreiben

Es gibt Zeiten, in denen wir von den Superklassen erben müssen. Dazu müssen wir manchmal den Konstruktor überschreiben. Sehen Sie sich das folgende Beispiel an, um zu verstehen, was das alles ist:

python_constructor3.jpg

Hier haben wir eine Klasse namens Bird erstellt, in der der Konstruktor das Attribut hungry definiert. Wir führen die folgenden aus und sehen, wie es funktioniert:

 >>> b = Vogel () >>> b.eat () Aaaah ... >>> b.eat () Nein danke 

Was passiert nun, wenn wir von dieser Klasse erben? Sehen wir uns den folgenden Code an:

 Klasse SongBird (Bird): def __init __ (self): self.sound = 'Squawk!' def sing (self): print self.sound 

Wir führen ein kleines Programm durch:

 >>> sb = SongBird () >>> sb.sing () Squawk! 

Wenn wir nun die Methode eat () aufrufen, sehen wir einen Fehler:

 >>> sb.eat () Rückverfolgung (letzter Anruf zuletzt): Datei "<stdin>", Zeile 1, in? Datei "birds.py", Zeile 6, in eat wenn selbst.hungrig: AttributeError: SongBird-Instanz hat kein Attribut "hungrig" 

Die Ausnahme besagt, dass das Attribut hungry nicht vorhanden ist. Daher müssen wir den Konstruktor der Superklasse in unserem Konstruktor aufrufen:

 Klasse SongBird (Bird): def __init __ (self): Bird .__ init __ (Selbst) self.sound = 'Squawk!' def sing (self): print self.sound 

Beim Ausführen des Codes läuft nun alles reibungslos:

 >>> sb = SongBird () >>> sb.sing () Squawk! >>> sb.eat () Aaaah ... >>> sb.eat () Nein danke 

Damit haben wir das Tutorial beendet. Wir wissen bereits, wie man die __init__-Methode grundlegend einsetzt und wie man es macht, wenn wir eine höhere Klasse erben müssen.

See also  Verwenden Sie PHPUnit in Laravel

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *