logo

Konstruktörer i Python

Förutsättningar: Objektorienterad programmering i Python, Objektorienterad Python3

Python3








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

>



>

Produktion

GeekforGeeks>

Exempel på parametriserad konstruktör:

Python3


java string.format



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

>

>

Produktion

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

Exempel:

Pytonorm




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

>

osi modelllager

>

Produktion

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

Förklaring:

I det här exemplet definierar vi en klass MyClass med både en standardkonstruktor och en parametriserad konstruktor. Standardkonstruktorn kontrollerar om en parameter har skickats in eller inte, och skriver ut ett meddelande till konsolen i enlighet med detta. Den parametriserade konstruktorn tar in ett enda parameternamn och ställer in namnattributet för objektet till värdet för den parametern.

Vi definierar också en metod method() som kontrollerar om objektet har ett namnattribut eller inte, och skriver ut ett meddelande till konsolen i enlighet med detta.

Vi skapar två objekt av klassen MyClass med båda typerna av konstruktorer. Först skapar vi ett objekt med hjälp av standardkonstruktorn, som skriver ut meddelandet Default constructor anropad till konsolen. Vi anropar sedan metoden method() på detta objekt, som skriver ut meddelandet Metod anropad utan namn till konsolen.

Därefter skapar vi ett objekt med hjälp av den parametriserade konstruktorn och skickar in namnet John. Konstruktorn anropas automatiskt och meddelandet Parameterized constructor anropad med namnet John skrivs ut på konsolen. Vi anropar sedan metoden method() på det här objektet, vilket skriver ut meddelandet Method anropad med namnet John till konsolen.

Sammantaget visar detta exempel hur båda typerna av konstruktörer kan implementeras i en enda klass i Python.

Fördelar med att använda konstruktörer i Python:

    Initiering av objekt : Konstruktörer används för att initiera objekten i en klass. De låter dig ställa in standardvärden för attribut eller egenskaper, och låter dig även initiera objektet med anpassade data. Lätt att implementera: Konstruktörer är lätta att implementera i Python och kan definieras med metoden __init__() .
  • Bättre läsbarhet: Konstruktörer förbättrar kodens läsbarhet genom att göra det tydligt vilka värden som initieras och hur de initieras.
  • Inkapsling: Konstruktörer kan användas för att framtvinga inkapsling genom att säkerställa att objektets attribut initieras korrekt och på ett kontrollerat sätt.

Nackdelar med att använda konstruktörer i Python:

    Överbelastning stöds inte: Till skillnad från andra objektorienterade språk stöder Python inte metodöverbelastning. Det betyder att du inte kan ha flera konstruktörer med olika parametrar i en enda klass. Begränsad funktionalitet: Konstruktörer i Python är begränsade i sin funktionalitet jämfört med konstruktörer i andra programmeringsspråk. Till exempel har Python inte konstruktörer med åtkomstmodifierare som offentliga, privata eller skyddade. Konstruktörer kan vara onödiga: I vissa fall kanske konstruktörer inte är nödvändiga, eftersom standardvärdena för attribut kan vara tillräckliga. I dessa fall kan användning av en konstruktor lägga till onödig komplexitet till koden.

Sammantaget kan konstruktörer i Python vara användbara för att initiera objekt och genomdriva inkapsling. Men de kanske inte alltid är nödvändiga och är begränsade i sin funktionalitet jämfört med konstruktörer i andra programmeringsspråk.