logo

Constructeurs in Python

Vereisten: Objectgeoriënteerd programmeren in Python, Objectgeoriënteerd Python3

Python3








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()>

>



>

Uitvoer

redden van
GeekforGeeks>

Voorbeeld van de geparametriseerde constructor:

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()>

>

wiskundeles java

>

Uitvoer

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

Voorbeeld:

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()>

tekenreeksaaneenschakeling java
>

>

Uitvoer

Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')>

Uitleg:

In dit voorbeeld definiëren we een klasse MyClass met zowel een standaardconstructor als een geparametriseerde constructor. De standaardconstructor controleert of een parameter al dan niet is doorgegeven en drukt dienovereenkomstig een bericht af naar de console. De geparametriseerde constructor neemt een enkele parameternaam over en stelt het naamattribuut van het object in op de waarde van die parameter.

We definiëren ook een methode method() die controleert of het object een naamattribuut heeft of niet, en dienovereenkomstig een bericht naar de console afdrukt.

We maken twee objecten van de klasse MyClass met behulp van beide typen constructors. Eerst maken we een object met behulp van de standaardconstructor, die het bericht Standaardconstructor aangeroepen naar de console afdrukt. Vervolgens roepen we de methode method() op dit object aan, waardoor het bericht Method aangeroepen zonder naam op de console wordt afgedrukt.

Vervolgens maken we een object met behulp van de geparametriseerde constructor, waarbij we de naam John doorgeven. De constructor wordt automatisch aangeroepen en het bericht Geparametriseerde constructor aangeroepen met de naam John wordt naar de console afgedrukt. Vervolgens roepen we de methode method() op dit object aan, waardoor het bericht Methode aangeroepen met de naam John naar de console wordt afgedrukt.

Over het geheel genomen laat dit voorbeeld zien hoe beide typen constructors in één klasse in Python kunnen worden geïmplementeerd.

Voordelen van het gebruik van constructors in Python:

    Initialisatie van objecten: Constructors worden gebruikt om de objecten van een klasse te initialiseren. Hiermee kunt u standaardwaarden instellen voor attributen of eigenschappen, en kunt u het object ook initialiseren met aangepaste gegevens. Eenvoudig te implementeren: Constructors zijn eenvoudig te implementeren in Python en kunnen worden gedefinieerd met de methode __init__().
  • Betere leesbaarheid: Constructors verbeteren de leesbaarheid van de code door duidelijk te maken welke waarden worden geïnitialiseerd en hoe ze worden geïnitialiseerd.
  • Inkapseling: Constructors kunnen worden gebruikt om inkapseling af te dwingen, door ervoor te zorgen dat de attributen van het object correct en op een gecontroleerde manier worden geïnitialiseerd.

Nadelen van het gebruik van constructors in Python:

    Overbelasting niet ondersteund: In tegenstelling tot andere objectgeoriënteerde talen ondersteunt Python geen overbelasting van methoden. Dit betekent dat u niet meerdere constructors met verschillende parameters in één klasse kunt hebben. Beperkte functionaliteit: Constructors in Python zijn beperkt in hun functionaliteit vergeleken met constructors in andere programmeertalen. Python heeft bijvoorbeeld geen constructors met toegangsmodificatoren zoals openbaar, privé of beschermd. Constructors zijn mogelijk niet nodig: in sommige gevallen zijn constructors mogelijk niet nodig, omdat de standaardwaarden van attributen voldoende kunnen zijn. In deze gevallen kan het gebruik van een constructor onnodige complexiteit aan de code toevoegen.

Over het algemeen kunnen constructors in Python nuttig zijn voor het initialiseren van objecten en het afdwingen van inkapseling. Ze zijn echter niet altijd nodig en zijn beperkt in hun functionaliteit in vergelijking met constructors in andere programmeertalen.