logo

Konstruktører i Python

Forudsætninger: Objektorienteret programmering i Python, Objektorienteret 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()>

>

>

Produktion

mysql show brugere
GeekforGeeks>

Eksempel på parametriseret konstruktør:

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

>

>

Produktion

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

Eksempel:

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

>

>

Produktion

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

Forklaring:

I dette eksempel definerer vi en klasse MyClass med både en standardkonstruktør og en parametriseret konstruktør. Standardkonstruktøren kontrollerer, om en parameter er blevet sendt ind eller ej, og udskriver en meddelelse til konsollen i overensstemmelse hermed. Den parametrerede konstruktør tager et enkelt parameternavn og indstiller objektets navnattribut til værdien af ​​denne parameter.

Vi definerer også en metode metode(), der kontrollerer, om objektet har en navneattribut eller ej, og udskriver en besked til konsollen i overensstemmelse hermed.

Vi opretter to objekter af klassen MyClass ved hjælp af begge typer konstruktører. Først opretter vi et objekt ved hjælp af standardkonstruktøren, som udskriver meddelelsen Standardkonstruktør kaldet til konsollen. Vi kalder derefter metoden () metoden på dette objekt, som udskriver meddelelsen Metode kaldt uden et navn til konsollen.

Dernæst opretter vi et objekt ved hjælp af den parametriserede konstruktør og sender navnet John ind. Konstruktøren kaldes automatisk, og meddelelsen Parameterized constructor kaldet med navnet John udskrives til konsollen. Vi kalder derefter method()-metoden på dette objekt, som udskriver meddelelsen Method kaldet med navn John til konsollen.

Samlet set viser dette eksempel, hvordan begge typer konstruktører kan implementeres i en enkelt klasse i Python.

Fordele ved at bruge konstruktører i Python:

    Initialisering af objekter: Konstruktører bruges til at initialisere objekterne i en klasse. De giver dig mulighed for at indstille standardværdier for attributter eller egenskaber og giver dig også mulighed for at initialisere objektet med brugerdefinerede data. Nem at implementere: Konstruktører er nemme at implementere i Python og kan defineres ved hjælp af __init__() metoden.
  • Bedre læsbarhed: Konstruktører forbedrer kodens læsbarhed ved at gøre det klart, hvilke værdier der initialiseres, og hvordan de initialiseres.
  • Indkapsling: Konstruktører kan bruges til at gennemtvinge indkapsling ved at sikre, at objektets attributter initialiseres korrekt og på en kontrolleret måde.

Ulemper ved at bruge konstruktører i Python:

    Overbelastning ikke understøttet: I modsætning til andre objektorienterede sprog understøtter Python ikke metodeoverbelastning. Det betyder, at du ikke kan have flere konstruktører med forskellige parametre i en enkelt klasse. Begrænset funktionalitet: Konstruktører i Python er begrænset i deres funktionalitet sammenlignet med konstruktører i andre programmeringssprog. For eksempel har Python ikke konstruktører med adgangsmodifikatorer som offentlig, privat eller beskyttet. Konstruktører kan være unødvendige: I nogle tilfælde er konstruktører muligvis ikke nødvendige, da standardværdierne for attributter kan være tilstrækkelige. I disse tilfælde kan brug af en konstruktør tilføje unødvendig kompleksitet til koden.

Samlet set kan konstruktører i Python være nyttige til initialisering af objekter og håndhævelse af indkapsling. De er dog muligvis ikke altid nødvendige og er begrænsede i deres funktionalitet sammenlignet med konstruktører i andre programmeringssprog.