Forutsetninger: Objektorientert programmering i Python, objektorientert 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()> |
>
>Produksjon
mysql show-brukere
GeekforGeeks>
Eksempel på parameterisert 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()> |
>
>Produksjon
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()> |
>
>Produksjon
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')> Forklaring:
I dette eksemplet definerer vi en klasse MyClass med både en standardkonstruktør og en parameterisert konstruktør. Standardkonstruktøren sjekker om en parameter har blitt sendt inn eller ikke, og skriver ut en melding til konsollen tilsvarende. Den parameteriserte konstruktøren tar inn et enkelt parameternavn og setter navnattributtet til objektet til verdien av denne parameteren.
Vi definerer også en metodemetode() som sjekker om objektet har et navneattributt eller ikke, og skriver ut en melding til konsollen tilsvarende.
Vi lager to objekter av klassen MyClass ved å bruke begge typer konstruktører. Først lager vi et objekt ved å bruke standardkonstruktøren, som skriver ut meldingen Standardkonstruktør kalt til konsollen. Vi kaller deretter metoden()-metoden på dette objektet, som skriver ut meldingen Metode kalt uten navn til konsollen.
Deretter lager vi et objekt ved å bruke den parameteriserte konstruktøren, og sender inn navnet John. Konstruktøren kalles automatisk, og meldingen Parameterized constructor kalt med navnet John skrives ut til konsollen. Vi kaller deretter metoden()-metoden på dette objektet, som skriver ut meldingen Metode kalt med navn John til konsollen.
Totalt sett viser dette eksemplet hvordan begge typer konstruktører kan implementeres i en enkelt klasse i Python.
Fordeler med å bruke konstruktører i Python:
- Initialisering av objekter : Konstruktører brukes til å initialisere objektene til en klasse. De lar deg angi standardverdier for attributter eller egenskaper, og lar deg også initialisere objektet med tilpassede data. Enkel å implementere: Konstruktører er enkle å implementere i Python, og kan defineres ved hjelp av __init__() metoden.
- Bedre lesbarhet: Konstruktører forbedrer lesbarheten til koden ved å gjøre det klart hvilke verdier som initialiseres og hvordan de initialiseres. Innkapsling: Konstruktører kan brukes til å håndheve innkapsling, ved å sikre at objektets attributter initialiseres riktig og på en kontrollert måte.
Ulemper med å bruke konstruktører i Python:
- Overbelastning støttes ikke: I motsetning til andre objektorienterte språk, støtter ikke Python metodeoverbelastning. Dette betyr at du ikke kan ha flere konstruktører med forskjellige parametere i en enkelt klasse. Begrenset funksjonalitet: Konstruktører i Python er begrenset i funksjonalitet sammenlignet med konstruktører i andre programmeringsspråk. For eksempel har ikke Python konstruktører med tilgangsmodifikatorer som offentlig, privat eller beskyttet. Konstruktører kan være unødvendige: I noen tilfeller kan det hende at konstruktører ikke er nødvendige, da standardverdiene til attributter kan være tilstrekkelige. I disse tilfellene kan bruk av en konstruktør legge til unødvendig kompleksitet til koden.
Samlet sett kan konstruktører i Python være nyttige for å initialisere objekter og håndheve innkapsling. Imidlertid er de kanskje ikke alltid nødvendige og er begrenset i funksjonalitet sammenlignet med konstruktører i andre programmeringsspråk.