logo

Rakentajat Pythonissa

Edellytykset: Olio-ohjelmointi Pythonissa, olio-ohjelmointi Python 3

Python 3






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

>

vaihda merkkijono javassa
>

Lähtö

normalisointi tietokannassa
GeekforGeeks>

Esimerkki parametroitu konstruktori:

Python 3




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

>

>

Lähtö

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

Esimerkki:

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

muuntaminen merkkijonoksi
>

>

Lähtö

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

Selitys:

Tässä esimerkissä määritämme luokan MyClass, jossa on sekä oletuskonstruktori että parametroitu konstruktori. Oletuskonstruktori tarkistaa, onko parametri välitetty vai ei, ja tulostaa viestin konsoliin vastaavasti. Parametrisoitu rakentaja ottaa yhden parametrin nimen ja asettaa objektin nimi-attribuutin tämän parametrin arvoon.

Määrittelemme myös method method(), joka tarkistaa, onko objektilla name-attribuutti vai ei, ja tulostaa viestin konsoliin vastaavasti.

Luomme kaksi MyClass-luokan objektia molemmilla konstruktorityypeillä. Ensin luodaan oletuskonstruktorilla objekti, joka tulostaa konsoliin kutsutun oletuskonstruktorin viestin. Kutsumme sitten tämän objektin metodia method(), joka tulostaa konsoliin viestin Method kutsutaan ilman nimeä.

Seuraavaksi luomme objektin käyttämällä parametroitua konstruktoria, ja annamme nimen John. Konstruktori kutsutaan automaattisesti, ja konsoliin tulostetaan viesti Parameterized constructor kutsutaan nimellä John. Kutsumme sitten tämän objektin method()-metodia, joka tulostaa konsoliin viestin Method kutsutaan nimellä John.

Kaiken kaikkiaan tämä esimerkki osoittaa, kuinka molemmat konstruktorityypit voidaan toteuttaa yhdessä luokassa Pythonissa.

git-tila

Pythonin konstruktorien käytön edut:

    Objektien alustus: Konstruktoreita käytetään luokan objektien alustamiseen. Niiden avulla voit asettaa oletusarvoja attribuuteille tai ominaisuuksille, ja voit myös alustaa objektin mukautetuilla tiedoilla. Helppo toteuttaa: Rakentajat on helppo toteuttaa Pythonissa, ja ne voidaan määrittää __init__() -menetelmällä.
  • Parempi luettavuus: Rakentajat parantavat koodin luettavuutta tekemällä selväksi, mitä arvoja alustetaan ja miten ne alustetaan.
  • Kapselointi: Konstruktoreita voidaan käyttää kapseloinnin pakottamiseen varmistamalla, että objektin attribuutit alustetaan oikein ja hallitusti.

Pythonin rakentajien käytön haitat:

    Ylikuormitusta ei tueta: Toisin kuin muut oliopohjaiset kielet, Python ei tue menetelmän ylikuormitusta. Tämä tarkoittaa, että yhdessä luokassa ei voi olla useita rakentajia eri parametreillä. Rajoitettu toiminnallisuus: Pythonin konstruktorien toiminnallisuus on rajallinen verrattuna muiden ohjelmointikielten rakentajiin. Esimerkiksi Pythonissa ei ole rakentajia, joissa on pääsyn muokkaajia, kuten julkinen, yksityinen tai suojattu. Rakentajat voivat olla tarpeettomia: Joissakin tapauksissa rakentajia ei välttämättä tarvita, koska attribuuttien oletusarvot voivat olla riittäviä. Näissä tapauksissa konstruktorin käyttö voi lisätä koodiin tarpeetonta monimutkaista.

Kaiken kaikkiaan Pythonin rakentajat voivat olla hyödyllisiä objektien alustamiseen ja kapseloinnin pakottamiseen. Ne eivät kuitenkaan välttämättä aina ole tarpeellisia, ja niiden toiminnallisuus on rajallinen verrattuna muiden ohjelmointikielten rakentajiin.