Conținut curs
Python Basic
Introducere în Python Instalarea Python și configurarea mediului de lucru Sintaxa și indentarea în Python Variabile și tipuri de date Operatori și expresii Structuri de control: if, elif, else Bucle: for și while Funcții Module și pachete Listele în Python Tuplurile în Python Seturile în Python Dicționarele în Python String-urile în Python Lucrul cu date și timp în Python Comprehensions în Python Gestionarea excepțiilor în Python (introducere) Închideri (closures) în Python (introducere) Lambda funcții în Python Încapsularea în Python (introducere) Testarea codului în Python (introducere)
0/21
Biblioteci și pachete
- Introducere în bibliotecile standard ale Python - Introducere în bibliotecile externe ale Python - Lucrul cu fișiere în Python (introducere)
0/3
Programare orientată pe obiect
- Introducere în programarea orientată pe obiect (OOP) - Ereditatea în Python (introducere)
0/2
Dezvoltare web cu Python
Introducere în dezvoltarea web cu Python
0/1
Python Basic
Despre lecție

În această lecție, vom discuta despre încapsulare în Python, ce este ea și cum să o implementăm folosind proprietăți și setteri.

Ce este încapsularea?

Încapsularea este unul dintre cele patru principii fundamentale ale programării orientate pe obiect (OOP) și se referă la restrângerea accesului la anumite componente ale unui obiect, astfel încât să se protejeze starea internă a acestuia și să se prevină modificări accidentale sau neautorizate. În esență, încapsularea permite ascunderea detaliilor implementării și expunerea doar a unei interfețe publice pentru interacțiunea cu obiectul.

În Python, încapsularea nu este impusă în mod strict, deoarece nu există modificatori de acces precum private sau protected (ca în alte limbaje de programare, precum Java sau C++). Cu toate acestea, putem implementa încapsularea prin convenții de denumire și folosind proprietăți și setteri.

Proprietăți și setteri

Proprietățile și setterii sunt mecanisme folosite în Python pentru a controla accesul și modificarea atributelor unei clase, implementând încapsularea.

Proprietăți

Proprietățile sunt metode care permit accesul la anumite atribute ale unei clase, fără a expune în mod direct acele atribute. Pentru a defini o proprietate, folosim decoratorul @property deasupra unei metode care returnează valoarea atributului pe care dorim să-l expunem.

Setteri

Setterii sunt metode care permit modificarea anumitor atribute ale unei clase, validând și asigurându-se că modificările sunt acceptabile înainte de a actualiza atributul. Pentru a defini un setter, folosim decoratorul @nume_proprietate.setter deasupra unei metode care primește valoarea pe care dorim să o setăm și actualizează atributul în mod corespunzător.

Exemplu: Încapsularea atributelor unei clase Persoana

python
class Persoana:
    def __init__(self, nume, varsta):
        self._nume = nume
        self._varsta = varsta

    @property
    def nume(self):
        return self._nume

    @property
    def varsta(self):
        return self._varsta

    @varsta.setter
    def varsta(self, valoare):
        if valoare < 0:
            raise ValueError("Vârsta nu poate fi negativă!")
        self._varsta = valoare


persoana = Persoana("Ion", 30)

# Accesarea atributelor prin proprietăți
print(persoana.nume)
print(persoana.varsta)

# Modificarea atributului varsta prin setter
persoana.varsta = 35
print(persoana.varsta)

# Încercarea de a seta o valoare negativă pentru varsta va genera o eroare
persoana.varsta = -5  # ValueError: Vârsta nu poate fi negativă!

În acest exemplu, am implementat încapsularea atributelor _nume și _varsta ale clasei Persoana, folosind proprietăți și setteri pentru a controla accesul și modificarea acestor atribute.

Prin folosirea încapsulării în Python, puteți crea clase mai sigure și mai ușor de întreținut, protejând starea internă a obiectelor și expunând doar interfețe publice pentru interacțiunea cu acestea.