Python 3
Machine Learning

PENTRU ELEVII DE LICEU

LECȚIA 16
PAG. 1 / 4
OOP - Atribute și metode
Acasă >>> Lecții online

Unul dintre cele mai importante aspecte ale programării orientate pe obiecte (OOP sau OOP) este înțelegerea modului în care obiectele stochează date (prin atribute) și interacționează cu acele date (prin metode). Această relație între date și comportamente este ceea ce face OOP atât de puternic și intuitiv.

Ce sunt atributele?

Un atribut este o variabilă asociată unei instanțe a unei clase. Cu alte cuvinte, fiecare obiect (instanță a clasei) poate avea propriile sale valori stocate în aceste variabile.

În Python, atributele se definesc în mod obișnuit în interiorul metodei __init__, cu ajutorul cuvântului cheie self. Acesta indică faptul că variabila aparține obiectului curent. De exemplu:

class Student:
    def __init__(self, nume, varsta, nota_medie):
        self.nume = nume
        self.varsta = varsta
        self.nota_medie = nota_medie


Aceste elemente esențiale — nume, varsta și nota_medie — sunt, de fapt, atributele distinctive care definesc fiecare obiect creat din clasa Student. Așa cum fiecare elev este unic, fiecare obiect va avea propriile sale valori, formând astfel amprenta sa individuală în program.
Să analizăm codul de mai jos, unde am creat un obiect și accesat apoi atributele:
Editor - exemplu_oop.py
       
Rezultatul în consolă done

Modificarea atributelor

Bineînțeles, putem modifica aceste atribute și după ce obiectul a fost creat:

elev1.nota_medie = 9.80

Testați voi adăugând codul mai sus în editor!

Ștergerea atributelor

Putem șterge un atribut al unui obiect deja instanțiat în Python folosind instrucțiunea del. Uite un exemplu simplu:

class Masina:
    def __init__(self, marca, an):
        self.marca = marca
        self.an = an

m = Masina("Dacia", 2020)
print(m.marca) # Output: Dacia

del m.marca # Ștergem atributul `marca`

# print(m.marca)
# Va da eroare: AttributeError: 'Masina' object has no attribute 'marca'


După ce am șters atributul, marca, dacă încercăm să-l accesăm, vom primi o eroare de tipul AttributeError.

Dacă vrei să verifici înainte dacă un atribut există, putem folosi

hasattr(obj, "atribut")

Spre exemplu, verificăm dacă are atributul "marca":

if hasattr(m, "marca"):
    print("Masina are atributul 'marca':", m.marca)
else:
    print("Masina nu mai are atributul 'marca'")


Așa putem preveni erorile când încercăm să accesăm atribute care s-ar putea să nu existe (nu au fost create sau au fost șterse dinamic prin cod).

Am rescris acum codul de mai sus, fără a rescrie clasa:

m = Masina("Dacia", 2020)

if hasattr(m, "marca"):
    print("Masina are atributul 'marca':", m.marca)
else:
    print("Masina nu are atributul 'marca'")

del m.marca # Ștergem atributul

if hasattr(m, "marca"):
    print("Masina are atributul 'marca':", m.marca)
else:
    print("Masina nu mai are atributul 'marca'")


În consolă vom obține următorul rezultat:



Notă. Editorul online nu are implementată funcția del, deci va trebui să rulați programul acesta local, pe calculatorul vostru.
Avansează la pagina următoare.
 home   list  LECȚII   perm_identity   arrow_upward