OOP în PYTHON:
Programarea orientată pe obiecte (OOP în Python) ne permite să proiectăm
programe care folosesc obiecte ș i clase. Acest principiu leagă datele ș i
funcț iile aferente. C++, C#, Python ș i Java sunt unele dintre
Limbaje OOP. În acest articol, vom analiza
Principiile OOP cu exemple de cod.
Principles of OOP
Clasă
Obiecte
Polimorfism
Încapsulare
Moș tenire
Abstracț ia datelor
Clasă
În Python, o clasă este un model pentru crearea de obiecte. O clasă defineș te
atributele ș i metodele obiectelor sale. O clasă defineș te ce este un
obiectul acelei clase va arăta ș i cum se va comporta.
Ce este un obiect?
Un obiect este o instanț ă a unei clase. Reprezintă un element specific care este
creat pe baza definiț iei clasei. Un obiect are propria sa unicitate
identitate, stat ș i comportament.
Folosimclasăcuvânt cheie pentru crearea unei clase
clasa Persoană:
Alte linii
Constructor ș i sine
__init__este o metodă specială. Este cunoscută ș i sub denumirea de constructor al
clasa, care este apelată automat atunci când un obiect al clasei este
creat. Este folosit pentru a iniț ializa atributele obiectului ș i necesare
configurări.
The__init__ metoda necesită de obicei cel puț in un parametru, care
estesinSe referă la instanț a obiectului care este creată.
clasa Persoană:
def __init__(self, nume, varsta):
Initializing atributele
[Link] = nume
[Link] = age
Crearea obiectului
Pentru a crea obiecte, trebuie să apelăm constructorul, care
este__init__ metodă.
Prin apelareNumeleClasei()ca metodă, care estePersoanăîn acest caz. Aș adar, prin
făcând asta, chemăm__init__ metoda dePersoanăclasă.
Crearea a două obiecte unice
person1 = Person("John",25)
person2 = Person("Alice",30)
Metode
Metodele sunt funcț ii care sunt definite în interiorul unei clase ș i sunt apelate
pe obiectele acelei clase.
Ei au acces la atributele obiectului ș i le pot modifica.
Primul parametru al unei metode este de obicei numitauto. A suna un
metodă, foloseș ti notaț ia cu punct, specificând obiectul urmat de
denumire metodă.
clasă Persoană:
def __init__(self, nume, varsta):
Iniț ializarea atributelor
[Link] = name
[Link] = age
def obtine_info():
Metodă
print("Nume:", nume, " Vârstă:", vârstă)
Crearea unui obiect unic
person1 = Person("John",25)
Apelarea unei metode cu o notare
person1.get_info()
Metode de Clasă
Metodele de clasă sunt definite folosind@classmethoddecorator ș i sunt
legat de clasă mai degrabă decât de instanț a clasei.
Au acces la variabilele de clasă ș i efectuează acț iuni legate de acestea.
la clase mai degrabă decât la obiecte individuale. (Pentru a defini un nivel de clasă
variabilă, trebuie să o plasezi direct sub declaraț ia clasei.)
Primul parametru al unei metode de clasă este de obicei numit,clscare
se referă la clasa în sine.
Pentru a apela o metodă a unei clase în Python, foloseș ti numele clasei urmat de
numele metodei în notaț ie punctată.
Puteț i găsi mai multe informaț ii despre decoratori în aceasta
articol.
clasa Cerc:
variabile la nivel de clasă
pi = 3.14
def __init__(self, rază):
[Link] = rază
def calculează_aria(self):
întoarce [Link] * [Link] * [Link]
@classmethod
def schimbare_pi(cls, nou_pi):
[Link] = noul_pi
Crearea obiectelor Cerc
circle1 = Circle(5)
circle2 = Circle(10)
Apelarea unei metode de instanț ă
area1 = circle1.calculate_area()
print (arean1)# Ieș ire: 78.5
Apelând o metodă de clasă
Cerc.schimba_pi(3.14159)
aria2 = cerc2.calculeaza_aria()
print(area2) # Ieș ire: 314.159
Metode Statice
Metodele statice sunt definite folosind@staticmethoddecorator ș i sunt
nu este legat de clasă, ci mai degrabă de instanț a clasei.
Ei nu au acces la atributele obiectului sau la nivelul clasei
variabilele, deoarece sunt independente de starea clasei.
Metodele statice sunt de obicei utilizate pentru funcț ii sau operaț iuni de utilitate.
care nu depind de contextul clasei sau al instanț ei.
Ele sunt similare cu funcț iile obiș nuite. Dar sunt plasate în interiorul unui
clasă pentru scopuri organizaț ionale.
Puteț i găsi mai multe informaț ii despre decoratori în aceasta
articol.
class MathUtils:
@staticmethod
def patrat(x):
return x * x
@staticmethod
def cub(x):
return x * x * x
Apelarea metodelor statice direct
result1 = [Link](5)
print(result1)# Output: 25
result2 = [Link](3)
print(result2)# Ieș ire: 27
Metodele statice pot fi accesate direct din clasă folosind
notaț ie cu puncte.
Polimorfism
Polimorfismul permite tratamentul obiectelor de tipuri diferite ca
obiecte ale unei superclase comune. Subclasele au acces la toate
metode ș i atribute.
clasa Persoană:
def __init__(self, nume):
[Link] = name
def obtine_detalii(self):
return f"Nume: {[Link]}"
clasă Angajator(Persoană):
def __init__(self, nume, companie):
super().__init__(nume)
[Link] = company
def obtine_detalii(self):
întoarce Nume: {[Link]}, Companie: {[Link]}
Crearea de obiecte din clase diferite
person = Person("John")
employer = employer ("Alice,"XYZ Corp")
Apelarea funcț iei cu diferite obiecte
person.get_details() Output: Name: John
employer.get_details() # Output: Name: Alice, Company: XYZ Corp
În acest exemplu, subclasăPersoanăeste superclasa
alAngajatorsubclasă.Employer clasa are acces la atribute
dePersoanăclasa ș i metodele sale.
De asemenea, după cum vezi,get_details()metoda este suprascrisă, care
înseamnă că este redefinit în subclasă.
Încapsulare
Încapsularea ajută la protejarea datelor de accesul neautorizat ș i
asigură întreț inerea adecvată.
Câteva modificatori de acces comune utilizate în Python:
Public: Membru public (atribute ș i metode) sunt
accesibil de oriunde, atât din interior, cât ș i din exterior
clasă.
Privat: Membrii privaț i sunt denumiț i folosind dublu
subsoluri (__) ca un prefix înaintea atributului sau metodei
nume. Acestea pot fi accesate doar în interiorul clasei, nu
din afara clasei.
Protejat: Membrii protejaț i sunt denumiț i folosind un
underscore simplu (_) ca un prefix înainte de atribut sau
numele metodei. Acestea pot fi accesate în cadrul clasei ș i al său
subclase (clase derivate), dar nu din afara clasei
ierarhie.
Membrii normali privaț i ș i protejaț i sunt accesibili din exterior
clasa. Dar ne aș teptăm ca utilizatorii să nu intervenă în acestea
membri.
clasă ContBancar:
def __init__(self, număr_cont, sold):
self.account_number = account_number
self.__balance = balanta # Atribut privat
def obț ine_sold(self):
returnează self.__balance
def depozit(self, suma):
self.__balance += suma
def retrage(self, suma):
dacă self.__balance >= sumă:
self.__balance -= sumă
altfel:
Sold insuficient.
Crearea unui obiect BankAccount
account = BankAccount("123456789",1000)
Accesarea atributelor ș i apelarea metodelor
print(account.get_balance())# Ieș ire: 1000
[Link](500)
print(acount.get_balance())# Iesire: 1500
[Link](2000) Output: Insufficient balance
Concluzie
În cele din urmă, Programarea Orientată pe Obiecte (OOP) este un Paradigmă puternică
care permite dezvoltatorilor să creeze ș i să aranjeze codul într-un mod mai
modular ș i ordonat. Python, ca un limbaj orientat pe obiecte
limbajul, oferă suport extins pentru principiile OOP.