logo

Konstruktori Python

Priekšnosacījumi: Objektorientēta programmēšana Python , objektorientēta Python3

Python3






Salman Khan Khan vecums



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

>



>

Izvade

GeekforGeeks>

Piemērs parametrizēts konstruktors:

Python3




virkni pārvērst par veselu skaitli

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

>

>

Izvade

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

Piemērs:

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

tīkls un internets
>

>

Izvade

matricas c programmēšanā
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')>

Paskaidrojums:

Šajā piemērā mēs definējam klasi MyClass gan ar noklusējuma konstruktoru, gan parametrizētu konstruktoru. Noklusējuma konstruktors pārbauda, ​​vai parametrs ir ievadīts vai nav, un attiecīgi izdrukā ziņojumu konsolei. Parametrētais konstruktors uzņem viena parametra nosaukumu un iestata objekta nosaukuma atribūtu uz šī parametra vērtību.

Mēs arī definējam metodi metodi (), kas pārbauda, ​​vai objektam ir nosaukuma atribūts vai nav, un attiecīgi izdrukā ziņojumu konsolei.

Mēs izveidojam divus klases MyClass objektus, izmantojot abu veidu konstruktorus. Pirmkārt, mēs izveidojam objektu, izmantojot noklusējuma konstruktoru, kas uz konsoli izdrukā ziņojumu Noklusējuma konstruktors. Pēc tam mēs šajā objektā izsaucam metodi method(), kas konsolei izdrukā ziņojumu Method sauc bez nosaukuma.

Tālāk mēs izveidojam objektu, izmantojot parametrizēto konstruktoru, ievadot vārdu Jānis. Konstruktors tiek izsaukts automātiski, un konsolē tiek izdrukāts ziņojums Parameterized konstruktors izsaukts ar vārdu Jānis. Pēc tam šajā objektā izsaucam metodi metodi (), kas konsolei izdrukā ziņojumu Method sauc ar vārdu Jānis.

Kopumā šis piemērs parāda, kā abu veidu konstruktorus var ieviest vienā Python klasē.

Konstruktoru izmantošanas priekšrocības programmā Python:

    Objektu inicializācija: klases objektu inicializācijai tiek izmantoti konstruktori. Tie ļauj iestatīt noklusējuma vērtības atribūtiem vai rekvizītiem, kā arī ļauj inicializēt objektu ar pielāgotiem datiem. Vienkārša ieviešana: konstruktorus ir viegli ieviest programmā Python, un tos var definēt, izmantojot __init__() metodi.
  • Labāka lasāmība: konstruktori uzlabo koda lasāmību, skaidri norādot, kādas vērtības tiek inicializētas un kā tās tiek inicializētas.
  • Iekapsulēšana: konstruktorus var izmantot, lai īstenotu iekapsulēšanu, nodrošinot, ka objekta atribūti tiek inicializēti pareizi un kontrolētā veidā.

Konstruktoru izmantošanas trūkumi Python:

    Pārslodze netiek atbalstīta: atšķirībā no citām objektorientētām valodām Python neatbalsta metožu pārslodzi. Tas nozīmē, ka vienā klasē nevar būt vairāki konstruktori ar dažādiem parametriem. Ierobežota funkcionalitāte: Python konstruktoru funkcionalitāte ir ierobežota salīdzinājumā ar konstruktoriem citās programmēšanas valodās. Piemēram, Python nav konstruktoru ar piekļuves modifikatoriem, piemēram, publiskiem, privātiem vai aizsargātiem. Konstruktori var būt nevajadzīgi: dažos gadījumos konstruktori var nebūt nepieciešami, jo var pietikt ar atribūtu noklusējuma vērtībām. Šādos gadījumos konstruktora izmantošana var radīt nevajadzīgu kodu sarežģītību.

Kopumā Python konstruktori var būt noderīgi objektu inicializēšanai un iekapsulēšanas nodrošināšanai. Tomēr tie ne vienmēr var būt nepieciešami, un to funkcionalitāte ir ierobežota salīdzinājumā ar konstruktoriem citās programmēšanas valodās.