Python - Konstruktoren

Inhaltsverzeichnis
In Python es gibt sogenannte "magische" Methoden, dh Methoden, die konstruiert 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 __drin__ es ist dafür verantwortlich, als Konstruktor zu fungieren, das heißt, dass es eine Reihe von Attributen initialisiert und den Code ausführt, den wir im Moment der Erstellung eines Objekts der Klasse definieren Anfang und Ende des Initwortes dann hast du schon die richtige Syntax dafür Python Nehmen Sie es als "magische" Methode und wissen Sie, dass es beim Instanziieren der Klasse ausgeführt werden muss.
Was der Konstruktor erreicht, ist, dass ein Objekt nicht wie folgt initialisiert wird:
 >>> f = FooBar () >>> f.init () 

Bereits beim Platzieren dieses Codes hat das Objekt seine Attribute initialisiert, indem nur Folgendes verwendet wird:
>>> f = FooBar ()

Wie Sie sehen, ist dies eine wichtige Ersparnis beim Codieren und eine Hilfe, falls wir vergessen, das Objekt zu initialisieren.
Konstruktor erstellen
Erstellen Sie den Konstruktor in Python Es ist ganz einfach, wir müssen nur die Methode definieren und hinzufügen, was beim Erstellen des Objekts zu tun ist. Sehen wir uns ein Beispiel an:

Im Bild sehen Sie die definierte Methode und in dem, was sie ausführen muss, sehen wir, dass sie das Attribut definiert irgendwas und ist gleich 42. Sehen wir uns ein Beispiel für die Ausführung eines Objekts dieser Klasse an:

Im Bild sehen wir, dass bei der Definition des Objekts f vom Typ FooBar Es wird initialisiert und beim Zugriff auf sein Attribut gibt somevar 42 aus, das ist der im Konstruktor definierte Wert.
Was passiert nun, wenn die Attribute dynamisch initialisiert werden sollen, schreiben wir die Methode wie folgt um:
 Klasse FooBar: def __init __ (self, value = 42): self.somevar = value 

Wenn wir den optionalen Parameter machen, können wir einen Wert übergeben, falls 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 dynamisch gemacht, sodass wir unseren Objekten je nach Bedarf innerhalb des Programms unterschiedliche Attribute zuweisen können.
Konstruktor überschreiben
Manchmal müssen wir von den Superklassen erben, dafür müssen wir manchmal den Konstruktor überschreiben. Sehen wir uns das folgende Beispiel an, um zu verstehen, worum es geht:

Hier haben wir eine Klasse namens Bird erstellt, in der der Konstruktor das hungrige Attribut definiert, wir führen Folgendes aus und sehen, wie es funktioniert:
 >>> b = Bird () >>> b.eat () Aaaah… >>> b.eat () Nein, danke! 

Was passiert nun, wenn wir von dieser Klasse erben, sehen wir uns den folgenden Code an:
 class 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 () Traceback (letzter Aufruf zuletzt): Datei "", Zeile 1, in? Datei "birds.py", Zeile 6, in eat if self.hungry: AttributeError: SongBird-Instanz hat kein Attribut 'hungry' 

Die Ausnahme sagt uns, dass das hunger-Attribut nicht existiert, also müssen wir den Konstruktor der Superklasse innerhalb unseres Konstruktors aufrufen:
 class SongBird (Bird): def __init __ (self): Bird .__ init __ (self) self.sound = 'Squawk!' def sing (self): print self.sound 

Beim Ausführen des Codes funktioniert jetzt alles ohne Probleme:
 >>> sb = SongBird () >>> sb.sing () Squawk! >>> sb.eat () Aaaah… >>> sb.eat () Nein, danke! 

Damit beenden wir das Tutorial, wir wissen bereits, wie man die __init__-Methode auf grundlegende Weise verwendet und wie man es macht, wenn wir von einer höheren Klasse erben müssen.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben
wave wave wave wave wave