LECȚIA 16
|
PAG. 2 / 4
|
Acasă >>>
Lecții online

Atribute de instanță
În programarea orientată pe obiecte (OOP), când lucrăm cu clase în Python, e important să înțelegem bine ce înseamnă atributele de clasă și atributele de instanță. Aceste variabile (atribute) sunt elemente esențiale pentru a controla cum datele sunt stocate și accesate în obiectele create dintr-o clasă.Revenim la clasa Masina, despre care am tot discutat anterior. O variabilă de instanță este o caracteristică specifică fiecărei mașini în parte, adică un atribut care aparține fiecărui obiect creat din clasa Masina. Am văzut că în Python le definim în metoda specială __init__, care este constructorul clasei, și le punem în fața lor prefixul self:
class Masina:
def __init__(self, culoare, model, an):
self.culoare = culoare # variabilă de instanță
self.model = model # variabilă de instanță
self.an = an # variabilă de instanță
Astfel, fiecare obiect creat cu clasa Masina va avea propriile valori pentru culoare, model și an. Bun! Până aici știam totul.
Ce sunt atributele de clasă?
Atributul de clasă este o variabilă care aparține clasei în sine, nu fiecărui obiect în parte. Toate obiectele create din clasa respectivă vor împărți aceeași variabilă de clasă.Să spunem că vrem să contorizăm câte mașini au fost create din clasa Masina. Variabila care stochează această informație nu este o caracteristică a fiecărei mașini, ci a clasei în general.
Cum o definim? Simplu, o scriem direct în corpul clasei, fără să folosim cuvântul self.
Analizați codul complet mai jos: Observație. Atributul numar_masini nu ține de o anumită mașină, ci de întreaga clasă. Dacă încerci să schimbi numar_masini pe o instanță, Python va crea o variabilă de instanță cu același nume, fără să afecteze variabila de clasă.
Atunci când creezi programe reale, trebuie să știi ce date sunt unice pentru fiecare obiect și ce date trebuie să fie împărtășite între toate obiectele.
Notă. Dacă încerci să stochezi ceva ce e comun tuturor obiectelor în variabile de instanță, pierzi eficiență și consistență. Pe de altă parte, dacă pui în atribute de clasă ceva ce ar trebui să fie unic pentru fiecare obiect, creezi confuzii și erori greu de detectat.
Avansează la pagina următoare.

home | list LECȚII | perm_identity | arrow_upward |