Un ghid complet despre conceptele POO în Python

Publicat: 2020-10-22

Programarea orientată pe obiecte sau OOP a fost o parte integrantă a lumii software de ceva vreme. Este o paradigmă de programare excelentă care oferă un anumit nivel de libertate și îmbunătățește realizările de programare pentru dezvoltator.

Există anumite concepte și principii de bază pe care fiecare dezvoltator ar trebui să le cunoască. Ei conduc premisa pentru dezvoltarea unei aplicații folosind acest model.

Aici, vom arunca o privire asupra unora dintre conceptele OOP cruciale, dar de bază, în Python . Aceste concepte îi conduc pe programatori să obțină rezultate mai bune, precum și să își modeleze aplicațiile într-un mod îmbogățitor.

Cuprins

Ce este programarea orientată pe obiecte?

Pentru cei neinițiați, aici ne vom începe inducția. Să înțelegem OOP-urile așa cum ar face-o un neprofesionist, pentru a înțelege mai profund cum le putem rezolva.

În această structură de programare, puteți combina cu ușurință lucruri cu proprietăți sau comportamente similare într-un singur obiect. Dacă vorbiți despre demografie, atunci acesta devine un singur obiect pentru acest model de programare. În mod similar, dacă vorbiți despre acțiuni care trebuie întreprinse, atunci acesta devine un alt obiect.

Toate sunt obiecte care conțin date brute. Soluția dvs. software va programa aceste obiecte astfel încât să îndeplinească obiectivul final împreună. Aceste obiecte vor efectua câteva acțiuni împreună, așa cum ați programat dvs., și vor oferi rezultatul.

Un exemplu excelent pentru a înțelege acest lucru ar fi un program de e-mail.

Să presupunem că aveți un obiect care conține conținutul e-mailului, cum ar fi numele destinatarului și subiectul. Există un al doilea obiect care detaliază atașarea și trimiterea e-mailului. Veți proiecta un program care va combina automat aceste obiecte, va asigura că un e-mail complet scris este gata cu atașamentele dorite și îl va trimite destinatarului.

Acesta este modul în care funcționează OOP. Cu toate acestea, unele concepte conduc acest lucru în acțiune. Să aruncăm o privire rapidă asupra acestor concepte și a modului în care funcționează.

Citiți: Este Python un limbaj orientat pe obiecte?

Cum se definește o clasă?

Clasa este cea care definește fiecare obiect și este un aspect important al conceptelor OOP în Python . Să presupunem că aveți patru obiecte, cum ar fi ochii, urechile, gura și nasul. Acestea sunt părți ale unei fețe, care este clasa.

Să începem cu cum să definim o clasă.

Să presupunem că vorbiți despre o clasă numită e-mail.

E-mailul cursului:

trece

Așa este definită clasa. Folosiți „pass” astfel încât atunci când rulați codul într-un compilator, să nu apară erori.

Numai definirea clasei poate să nu te ajute prea mult. Trebuie să adăugați câteva proprietăți pentru a-l face atractiv și codul util. Deci, trebuie să adăugați obiecte la clasa dvs.

Metoda ._init_() este cea care s-ar dovedi a fi utilă la definirea proprietăților într-o clasă.

Acest lucru va asigura că de fiecare dată când creați un nou obiect pentru clasă, această metodă va seta parametrii la starea inițială, astfel, inițialând un nou obiect de fiecare dată.

Primul parametru pentru această metodă ar fi întotdeauna auto, chiar și atunci când îi atribuiți mai mulți parametri.

Deci, ce se întâmplă în acest caz? Să presupunem că ai creat o clasă nouă. Instanța este transferată la parametrul self. Ca rezultat, ._init_() poate atribui proprietăți noi obiectului definit.

Dacă încă te gândești la cum să-l folosești, hai să-l înțelegem printr-un exemplu.

E-mailul cursului:

def ._init_(self, nume, destinatar, adresa):

self.name = nume

self.recipient = destinatar

self.address = adresa

Să defalcăm acest cod pentru o mai bună înțelegere.

Indentarea exprimată în codul de mai sus este critică. Ar trebui să potriviți la fel când scrieți programul folosind OOP-uri în Python . Să înțelegem variabila self din codul de mai sus.

Self.name produce un atribut numit nume. Valoarea parametrului nume este atribuită acestui atribut. În mod similar, atributele și valorile sunt atribuite și pentru celelalte variabile de sine.

Aceste atribute sunt cunoscute ca instanță. Va trebui să specificați valoarea fiecărui atribut menționat într-o anumită instanță. Să presupunem că există două tipuri de e-mailuri – bun venit și hrănire. Destinatarul e-mailului ar fi diferit pentru ambele cazuri (e-mailuri de bun venit și e-mailuri de îngrijire).

Atributele clasei, pe de altă parte, sunt diferite; vor conține aceeași valoare pentru toate instanțele de clasă. De exemplu, acestea sunt toate e-mailurile primite. Acesta este atributul clasei pe care îl puteți defini pentru ei.

E-mailul cursului:

#Atribut de clasă

E-mail: „E-mailuri de intrare”

def ._init_(self, nume, destinatar, adresa):

self.name = nume

self.recipient = destinatar

self.address = adresa

Aflați despre: Cum să codificați, să compilați și să rulați proiecte Java

Înțelegerea variabilelor de clasă și de instanță

Să luăm exemplul de mai sus în care am creat un atribut de clasă, precum și două variabile de instanță pentru a înțelege mai bine OOP-urile în Python .

E-mailul cursului:

E-mail: „E-mailuri de intrare”

def ._init_(self, nume, destinatar, adresa):

self.name = nume

self.recipient = destinatar

self.address = adresa

Să vorbim despre instanțiarea obiectelor din această clasă. Trebuie să setați valori pentru fiecare dintre aceste obiecte. Aceasta va fi valoarea inițială pentru fiecare obiect, așa cum sa discutat în partea anterioară a ghidului. În cazul în care nu atribuiți valori acestor obiecte, atunci veți primi un TypeError.

>>> Email()

Traceback (cel mai recent apel ultimul):

Fișierul „<pyshell#6>”, linia 1, în <modul>

E-mail ()

TypeError: __init__() lipsesc 4 argumente poziționale: „nume”, „destinatar” și „adresă”

Putem adăuga valoare imediat după numele clasei.

Nurture Email = Email (Nurture, David, [email protected])

E-mail de bun venit = E-mail (Bun venit, Daisy, [email protected])

Cu codul de mai sus, am generat două instanțe, pentru un e-mail de nutrire și un e-mail de bun venit. Să verificăm __init__() definit după instanța clasei pentru codul de mai sus. Vedem patru parametri, inclusiv de sine. Cu toate acestea, nu a fost menționată nicio variabilă pentru sine. Să înțelegem de ce?

Deci, ori de câte ori creați un obiect nou într-o clasă, instanțiați clasa. În timp ce faceți acest lucru, veți atribui o adresă de memorie, unde variabila va fi stocată. De îndată ce instanțiați un nou obiect, Python va crea automat o instanță și va fi transmisă primei variabile din metoda .__init__(). Ca rezultat, sinele este îndepărtat prin această metodă.

Cu variabila de clasă, vă puteți asigura că fiecare instanță pe care ați creat-o are asociată o variabilă sau o valoare. Acest lucru va asigura rezultate mai rapide și mai ușoare și, prin urmare, concluzii mai sigure pentru programarea dvs.

Citește și: Trebuie să citești 47 de întrebări și răspunsuri la interviu OOPS pentru cei proaspăt și cu experiență

Rezumând

Am înțeles diferitele aspecte ale creării unei clase, obiecte și metode folosind modelul de programare Python OOPs aici. În afară de aceasta, am înțeles și concepte precum instanțe și instanțiere, care sunt esențiale pentru programarea OOP în Python. În continuare, va trebui să înțelegeți principiile care guvernează aceste instanțe și clase, cum ar fi moștenirea, polimorfismul, abstracția și încapsularea. Sunt concepte de bază OOP în Python care conduc aplicația dvs. și rezultatele acesteia.

Pentru a merge mai departe în pâlnia Python, trebuie să aveți elementele de bază clare și înrădăcinate. Așadar, accesați cursurile și înțelegeți cum funcționează. Joacă-te puțin cu aceste variabile și înțelegeți rezultatele lor înainte de a vă putea configura aplicația.

Dacă sunteți curios să învățați știința datelor pentru a fi în fața progreselor tehnologice rapide, consultați Diploma PG în știința datelor de la upGrad și IIIT-B și perfecționați-vă pentru viitor.

De ce folosim POO?

Programarea orientată pe obiecte (OOP) este un cadru de programare care se bazează pe dezvoltarea de „obiecte” reutilizabile cu atributele și comportamentul lor asupra cărora pot fi acționate, manipulate și împachetate. Python acceptă atât OOP, cât și alte cadre. În Python, obțineți OOP folosind clase. Python are toate caracteristicile obișnuite ale programării orientate pe obiecte. Dezvoltatorii folosesc OOP în aplicațiile lor Python, deoarece face codurile mai reutilizabile și lucrul cu programe mai mari mai ușor. Deoarece o clasă poate fi definită o singură dată și utilizată de mai multe ori, sistemele OOP vă împiedică să duplicați codul. Ca rezultat, OOP simplifică respectarea conceptului „Nu te repeta” (DRY).

Ce este o clasă?

O clasă Python este similară cu un plan pentru generarea unui nou obiect. Un obiect este orice lucru pe care doriți să îl modificați sau să schimbați în timpul codificării. Când instanțiem un obiect de clasă, ceea ce se întâmplă atunci când definim o variabilă, un nou obiect este creat de la zero. Obiectele de clasă pot fi refolosite de câte ori este nevoie. O clasă este folosită pentru a construi fiecare articol. Considerați că acesta este planul pentru un anumit tip de articol. Clasele listează atributele care sunt necesare pentru acel tip de obiect, dar nu le atribuie o valoare. Clasele specifică, de asemenea, metode care sunt partajate de toate obiectele de același tip.

Ce este o variabilă de instanță?

O instanță de clasă deține variabile de instanță în Python. Valoarea unei variabile de instanță se poate modifica în funcție de instanța cu care este legată. Aceasta este diferită de o variabilă de clasă, care poate avea o singură valoare atribuită. Variabilele de instanță sunt declarate în cadrul unei metode de clasă. Când declarăm o clasă, putem atribui valori variabilelor de instanță. Când declarăm clasa, furnizăm valorile pe care dorim să le atribuim ca argumente.