logo

Konstruktoren in Python

Voraussetzungen: Objektorientierte Programmierung in Python, Objektorientiert Python3

Python3




Java-String eines Arrays





class> GeekforGeeks:> ># default constructor> >def> __init__(>self>):> >self>.geek>=> 'GeekforGeeks'> ># a method for printing data members> >def> print_Geek(>self>):> >print>(>self>.geek)> # creating object of the class> obj>=> GeekforGeeks()> # calling the instance method using the object obj> obj.print_Geek()>

>



>

Ausgabe

GeekforGeeks>

Beispiel für die parametrisierter Konstruktor:

Python3




class> Addition:> >first>=> 0> >second>=> 0> >answer>=> 0> ># parameterized constructor> >def> __init__(>self>, f, s):> >self>.first>=> f> >self>.second>=> s> >def> display(>self>):> >print>(>'First number = '> +> str>(>self>.first))> >print>(>'Second number = '> +> str>(>self>.second))> >print>(>'Addition of two numbers = '> +> str>(>self>.answer))> >def> calculate(>self>):> >self>.answer>=> self>.first>+> self>.second> # creating object of the class> # this will invoke parameterized constructor> obj1>=> Addition(>1000>,>2000>)> # creating second object of same class> obj2>=> Addition(>10>,>20>)> # perform Addition on obj1> obj1.calculate()> # perform Addition on obj2> obj2.calculate()> # display result of obj1> obj1.display()> # display result of obj2> obj2.display()>

>

>

Ausgabe

First number = 1000 Second number = 2000 Addition of two numbers = 3000 First number = 10 Second number = 20 Addition of two numbers = 30>

Beispiel:

Python




class> MyClass:> >def> __init__(>self>, name>=>None>):> >if> name>is> None>:> >print>(>'Default constructor called'>)> >else>:> >self>.name>=> name> >print>(>'Parameterized constructor called with name'>,>self>.name)> > >def> method(>self>):> >if> hasattr>(>self>,>'name'>):> >print>(>'Method called with name'>,>self>.name)> >else>:> >print>(>'Method called without a name'>)> # Create an object of the class using the default constructor> obj1>=> MyClass()> # Call a method of the class> obj1.method()> # Create an object of the class using the parameterized constructor> obj2>=> MyClass(>'John'>)> # Call a method of the class> obj2.method()>

>

>

Ausgabe

eine Million in Zahlen
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')>

Erläuterung:

In diesem Beispiel definieren wir eine Klasse MyClass mit einem Standardkonstruktor und einem parametrisierten Konstruktor. Der Standardkonstruktor prüft, ob ein Parameter übergeben wurde oder nicht, und gibt eine entsprechende Meldung an die Konsole aus. Der parametrisierte Konstruktor nimmt einen einzelnen Parameternamen auf und setzt das Namensattribut des Objekts auf den Wert dieses Parameters.

Wir definieren außerdem eine Methode method(), die prüft, ob das Objekt ein Namensattribut hat oder nicht, und eine entsprechende Meldung an die Konsole ausgibt.

Wir erstellen zwei Objekte der Klasse MyClass mit beiden Konstruktortypen. Zuerst erstellen wir mit dem Standardkonstruktor ein Objekt, das die Meldung „Standardkonstruktor aufgerufen“ an die Konsole ausgibt. Anschließend rufen wir die Methode method() für dieses Objekt auf, die die Meldung „Methode aufgerufen ohne Namen“ an die Konsole ausgibt.

Als nächstes erstellen wir ein Objekt mit dem parametrisierten Konstruktor und übergeben den Namen John. Der Konstruktor wird automatisch aufgerufen und die Meldung „Parametrisierter Konstruktor namens John“ wird auf der Konsole ausgegeben. Anschließend rufen wir die Methode method() für dieses Objekt auf, die die Meldung „Methode aufgerufen“ mit dem Namen John an die Konsole ausgibt.

Insgesamt zeigt dieses Beispiel, wie beide Arten von Konstruktoren in einer einzigen Klasse in Python implementiert werden können.

Vorteile der Verwendung von Konstruktoren in Python:

    Initialisierung von Objekten: Konstruktoren werden verwendet, um die Objekte einer Klasse zu initialisieren. Sie ermöglichen es Ihnen, Standardwerte für Attribute oder Eigenschaften festzulegen und das Objekt mit benutzerdefinierten Daten zu initialisieren. Einfach zu implementieren: Konstruktoren sind in Python einfach zu implementieren und können mit der Methode __init__() definiert werden.
  • Bessere Lesbarkeit: Konstruktoren verbessern die Lesbarkeit des Codes, indem sie klar machen, welche Werte initialisiert werden und wie sie initialisiert werden.
  • Kapselung: Konstruktoren können verwendet werden, um die Kapselung zu erzwingen, indem sie sicherstellen, dass die Attribute des Objekts korrekt und auf kontrollierte Weise initialisiert werden.

Nachteile der Verwendung von Konstruktoren in Python:

    Überladung nicht unterstützt: Im Gegensatz zu anderen objektorientierten Sprachen unterstützt Python keine Methodenüberladung. Das bedeutet, dass Sie nicht mehrere Konstruktoren mit unterschiedlichen Parametern in einer einzelnen Klasse haben können. Eingeschränkte Funktionalität: Konstruktoren in Python sind im Vergleich zu Konstruktoren in anderen Programmiersprachen in ihrer Funktionalität eingeschränkt. Python verfügt beispielsweise nicht über Konstruktoren mit Zugriffsmodifikatoren wie public, private oder protected. Konstruktoren sind möglicherweise nicht erforderlich: In einigen Fällen sind Konstruktoren möglicherweise nicht erforderlich, da die Standardwerte von Attributen möglicherweise ausreichend sind. In diesen Fällen kann die Verwendung eines Konstruktors den Code unnötig komplexer machen.

Insgesamt können Konstruktoren in Python nützlich sein, um Objekte zu initialisieren und die Kapselung zu erzwingen. Sie sind jedoch möglicherweise nicht immer notwendig und im Vergleich zu Konstruktoren in anderen Programmiersprachen in ihrer Funktionalität eingeschränkt.