Cerințe preliminare: Programare orientată pe obiecte în Python, orientată pe obiecte Python3
Python3
pyspark sql
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()> |
>
>Ieșire
GeekforGeeks>
Exemplu de constructor parametrizat:
Python3
modelul tcp ip
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()> |
>
conexiuni în java
>Ieșire
First number = 1000 Second number = 2000 Addition of two numbers = 3000 First number = 10 Second number = 20 Addition of two numbers = 30>
Exemplu:
Piton
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()> |
>
cum să găsiți dimensiunea monitorului
>Ieșire
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')> Explicaţie:
În acest exemplu, definim o clasă MyClass atât cu un constructor implicit, cât și cu un constructor parametrizat. Constructorul implicit verifică dacă un parametru a fost transmis sau nu și tipărește un mesaj în consolă în consecință. Constructorul parametrizat preia un singur nume de parametru și setează atributul nume al obiectului la valoarea acelui parametru.
De asemenea, definim o metodă method() care verifică dacă obiectul are sau nu un atribut de nume și imprimă un mesaj în consolă în consecință.
liste css
Creăm două obiecte din clasa MyClass folosind ambele tipuri de constructori. În primul rând, creăm un obiect utilizând constructorul implicit, care imprimă mesajul Constructor implicit apelat în consolă. Apoi apelăm metoda method() pe acest obiect, care imprimă pe consolă mesajul Metodă numită fără nume.
Apoi, creăm un obiect folosind constructorul parametrizat, trecând numele John. Constructorul este apelat automat, iar mesajul Constructor parametrizat numit cu numele John este tipărit pe consolă. Apoi apelăm metoda method() pe acest obiect, care imprimă pe consolă mesajul Method called cu numele John.
În general, acest exemplu arată cum ambele tipuri de constructori pot fi implementate într-o singură clasă în Python.
Avantajele utilizării constructorilor în Python:
- Inițializarea obiectelor: Constructorii sunt utilizați pentru a inițializa obiectele unei clase. Acestea vă permit să setați valori implicite pentru atribute sau proprietăți și, de asemenea, vă permit să inițializați obiectul cu date personalizate. Ușor de implementat: Constructorii sunt ușor de implementat în Python și pot fi definiți folosind metoda __init__().
- Lizibilitate mai bună: Constructorii îmbunătățesc lizibilitatea codului, clarificând ce valori sunt inițializate și cum sunt inițializate. Încapsulare: Constructorii pot fi utilizați pentru a impune încapsularea, asigurându-se că atributele obiectului sunt inițializate corect și într-o manieră controlată.
Dezavantajele utilizării constructorilor în Python:
- Supraîncărcarea nu este acceptată: Spre deosebire de alte limbaje orientate pe obiecte, Python nu acceptă supraîncărcarea metodei. Aceasta înseamnă că nu puteți avea mai mulți constructori cu parametri diferiți într-o singură clasă. Funcționalitate limitată: Constructorii din Python sunt limitati în funcționalitatea lor în comparație cu constructorii din alte limbaje de programare. De exemplu, Python nu are constructori cu modificatori de acces precum public, privat sau protejat. Constructorii pot fi inutili: în unele cazuri, constructorii pot să nu fie necesari, deoarece valorile implicite ale atributelor pot fi suficiente. În aceste cazuri, utilizarea unui constructor poate adăuga complexitate inutilă codului.
În general, constructorii din Python pot fi utili pentru inițializarea obiectelor și impunerea încapsulării. Cu toate acestea, ele pot să nu fie întotdeauna necesare și sunt limitate în funcționalitatea lor în comparație cu constructorii din alte limbaje de programare.