Mehrere Python-Konstruktoren
In diesem Tutorial werden Konstruktoren und die Methode zum Umgang mit der Notwendigkeit mehrerer Konstruktoren in Python erörtert.
Konstruktoren in Python
In Programmiersprachen wie Java, C++ und C# haben wir das Konzept einer Konstruktorfunktion, die nur ausgeführt wird, wenn ein Objekt der Klasse initialisiert wird. Die Konstruktorfunktion wird verwendet, um alle Klassenattribute zu initialisieren. Der Name dieser Konstruktorfunktion ist mit dem Namen der Klasse identisch. Das Konzept der Konstruktorfunktion ist in Python gleich, aber der Name der Konstruktorfunktion lautet __init__()
für alle Klassen. Der Konstruktor in Python nimmt immer einen Parameter, d. h. einen Zeiger auf das aufrufende Objekt. Der folgende Codeausschnitt zeigt, wie wir einen nicht parametrisierten Konstruktor in Python erstellen können.
class Person:
def __init__(self):
print("Constructor Function")
if __name__ == "__main__":
p1 = Person()
Ausgabe:
Constructor Function
Wir haben einen nicht parametrisierten Konstruktor für die Klasse Person
erstellt und in der Hauptfunktion ein Klassenobjekt Person
erstellt. Der Konstruktor wurde aufgerufen, als wir das Objekt mit p1 = Person()
erstellt haben.
Mehrere Konstruktoren in Python
In den Programmiersprachen Java, C# und C++ gibt es ein Konzept namens Mehrfachkonstruktoren, bei dem wir beliebig viele Konstruktoren für eine einzelne Klasse erstellen können. Leider können wir in Python nicht mehrere Konstruktoren für eine einzelne Klasse definieren. Eine allgemeine Methode zum Umgehen dieser Einschränkung besteht darin, einen Standardparameterkonstruktor zu verwenden. Ein Standardparameterkonstruktor ist derjenige, der seinen Klassenattributen automatisch einen Wert zuweist, wenn beim Erstellen des Klassenobjekts kein Parameter übergeben wird. Der Standardparameterkonstruktor weist dem Klassenattribut den angegebenen Wert zu, wenn während der Objekterstellung ein Wert angegeben wird. Der folgende Codeausschnitt zeigt, wie Sie mit dem Standardparameterkonstruktor in Python die Notwendigkeit mehrerer Konstruktoren beseitigen können.
class Person:
def __init__(self, name="Tom"):
self.name = name
def show(self):
print("Name = ", self.name)
if __name__ == "__main__":
p1 = Person()
p2 = Person("Mark")
p1.show()
p2.show()
Ausgabe:
Name = Tom
Name = Mark
Wir haben im obigen Code einen Standardparameterkonstruktor erstellt, indem wir den Standardwert während der Funktionsdefinition angegeben haben. Der Konstruktor der Klasse Person
nimmt einen Parameternamen und weist ihn dem Klassenparameter name
zu. Der Standardwert des Parameternamens ist Tom
. Wir haben in der Hauptfunktion zwei Objekte p1
und p2
der Klasse Person
erstellt. Das Objekt p1
gibt bei der Initialisierung keinen Wert an; das Objekt p2
übergibt Mark
als Konstruktorparameter. Wir haben dann die Funktion show()
mit p1
und p2
aufgerufen. Die Funktion show()
zeigt den Wert des Attributs name
an. Wenn p1
die Funktion show()
aufruft, ist die Ausgabe der Standardwert Name = Tom
, aber wenn p2
die Funktion show()
aufruft, ist die Ausgabe Name = Mark
, weil wir angegeben haben Mark
beim Erstellen des Objekts p2
.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn