Programarea cu Python îți deschide multe posibilități care merg dincolo de scripturi simple. O componentă esențială în programarea orientată pe obiecte este lucrul cu Clase. Acestea constituie baza pentru obiecte și îți permit să creezi și să gestionezi structuri de date complexe. În acest ghid, vei învăța cum să definești propriile clase în Python pentru a le folosi eficient proprietățile și metodele.
Cele mai importante concluzii
- Clasele sunt cheia programării orientate pe obiecte în Python.
- Un initializer (constructor) îți permite să definești proprietăți specifice la crearea unei clase.
- Metodele din clase îți permit să închizi funcții care lucrează cu proprietățile unui obiect.
- Accesul la proprietăți se face prin operatorul punct.
Ghid pas cu pas
Să începem cu bazele construcției claselor în Python. Mai întâi, trebuie să definești o nouă clasă folosind cuvântul cheie class. Poți face acest lucru în codul tău Python astfel:

Aici avem o clasă goală numită Angajat. O poți defini inițial fără parametrii, ceea ce înseamnă că clasa este creată fără o inițializare specifică. Aceasta este o bază importantă pentru a te asigura că nu vei întâmpina erori atunci când creezi obiecte mai târziu.
Acum să creezi un obiect al acestei clase. Este suficient să folosești numele clasei și să adaugi o pereche de paranteze goale:
În acest caz, avem un obiect Angajat, pe care l-am creat chiar acum. Pasul următor este să extindem clasa cu proprietăți. De exemplu, ai putea adăuga un nume clasei Angajat.
Pentru aceasta, trebuie mai întâi să definești un initializer care să servească drept constructor pentru clasa ta. Acest lucru se face prin metoda __init__.

Aici vezi cum se definește un constructor __init__. Transmitem numele ca parametru și folosim self pentru a stoca numele pentru obiectul curent.
Acum, că ai o proprietate, poți transmite direct un nume atunci când creezi un obiect:

Dacă creezi acum obiectul participant cu numele „Jan”, numele va fi stocat în instanță. Prin completarea automată, poți verifica dacă numele a fost setat corect.
Pentru a utiliza proprietățile, le poți apela folosind operatorul punct:

Aici este punctul în care poți accesa proprietățile obiectului tău. În acest caz, imprimi numele participantului.
În plus față de proprietăți, poți implementa și metode. Crearea unei metode funcționează similar cu definirea unei funcții:

Aici definești metoda înscriere. Observă din nou că self este trecut automat ca parametru metodei pentru a accesa instanța. La înscriere, de exemplu, am putea imprima un mesaj de succes:

Când apelezi metoda înscriere, arată astfel:

Aici apelezi metoda pe instanța participant, ceea ce îți oferă un feedback cu privire la înscriere.
În cele din urmă, putem transmite, de asemenea, parametri metodelor, similar cu funcțiile. De exemplu, o metodă de dezabonare, care așteaptă un parametru pentru dezabonare anticipată:

Aici analizezi dacă participantul dorește să se dezaboneze anticipat și emiți un mesaj corespunzător.
ScreenShot_320
Asta îți arată cât de interactive pot deveni clasa și metodele tale și cum reacționează la inputuri.
În final, ar trebui să rezumăm principiile fundamentale pe care le-am învățat. Definiția claselor constă în a defini atribute și metode care sunt relevante pentru obiectele aferente. Constructorul __init__ este esențial pentru a seta atributele la crearea obiectului.
Rezumat - Crearea și utilizarea propriilor clase în Python
Prin înțelegerea și aplicarea acestor principii fundamentale, poți dezvolta programe puternice și flexibile în Python. Poți crea clase care închid funcții și proprietăți specifice pentru a face programarea mai prietenoasă și mai eficientă.
Întrebări frecvente
Cum definesc o clasă în Python?Folosește cuvântul cheie class, urmat de numele clasei și de o două punct.
Care este scopul constructorului __init__?Este folosit pentru a efectua inițializări la crearea unui obiect.
Cum accesez proprietățile unui obiect?Folosește operatorul punct, urmat de numele proprietății, de exemplu, obiect.proprietate.
Poti transmite mai mulți parametri unei metode?Da, poți defini metode care acceptă mai mulți parametri.
Poti folosi funcții în interiorul claselor mele?Da, metodele nu sunt altceva decât funcții legate de o clasă.