logo

Concepte Python OOP

Programarea orientată pe obiecte este un concept fundamental în Python, dând putere dezvoltatorilor să construiască aplicații modulare, care pot fi întreținute și scalabile. Înțelegând principiile de bază OOP - clase, obiecte, moștenire, încapsulare, polimorfism și abstractizare - programatorii pot valorifica întregul potențial al capabilităților OOP ale Python pentru a proiecta soluții elegante și eficiente la probleme complexe.

Ce este programarea orientată pe obiecte în Python?

În Python, programarea orientată pe obiecte (OOP) este o paradigmă de programare care utilizează obiecte și clase în programare. Acesta își propune să implementeze entități din lumea reală, cum ar fi moștenirea, polimorfismele, încapsularea etc. în programare. Conceptul principal de programare orientată pe obiecte (OOP) sau concepte oops în Python este de a lega datele și funcțiile care lucrează împreună ca o singură unitate, astfel încât nicio altă parte a codului să nu poată accesa aceste date.



ce este un java dublu

Concepte OOP în Python

  • Clasă în Python
  • Obiecte în Python
  • Polimorfismul în Python
  • Încapsulare în Python
  • Moștenirea în Python
  • Abstracția datelor în Python
OOP-uri Python

Concepte Python OOP

Clasa Python

O clasă este o colecție de obiecte. O clasă conține planurile sau prototipul din care sunt create obiectele. Este o entitate logică care conține unele atribute și metode.

Pentru a înțelege necesitatea creării unei clase, să luăm în considerare un exemplu, să presupunem că doriți să urmăriți numărul de câini care pot avea atribute diferite, cum ar fi rasa și vârsta. Dacă se folosește o listă, primul element ar putea fi rasa câinelui, în timp ce al doilea element ar putea reprezenta vârsta acestuia. Să presupunem că există 100 de câini diferiți, atunci de unde știi care element ar trebui să fie care? Ce se întâmplă dacă ai vrea să adaugi alte proprietăți acestor câini? Acest lucru lipsește de organizare și este exact nevoia de cursuri.



Câteva puncte despre clasa Python:

  • Clasele sunt create prin clasa de cuvinte cheie.
  • Atributele sunt variabilele care aparțin unei clase.
  • Atributele sunt întotdeauna publice și pot fi accesate folosind operatorul punct (.). Ex.: Clasa mea.Atributul meu

Sintaxa definirii clasei:

class ClassName: # Statement-1 . . . # Statement-N>

Crearea unei clase goale în Python

În exemplul de mai sus, am creat o clasă numită Dog folosind cuvântul cheie class.



Piton
# Python3 program to # demonstrate defining # a class class Dog: pass>

Obiecte Python

În programarea orientată pe obiecte Python, obiectul este o entitate care are asociate o stare și un comportament. Poate fi orice obiect din lumea reală, cum ar fi un mouse, tastatură, scaun, masă, stilou etc. Numerele întregi, șiruri de caractere, numere în virgulă mobilă, chiar și tablouri și dicționare sunt toate obiecte. Mai precis, orice număr întreg sau orice șir unic este un obiect. Numărul 12 este un obiect, șirul Hello, world este un obiect, o listă este un obiect care poate conține alte obiecte și așa mai departe. Ați folosit obiecte de-a lungul timpului și poate nici nu vă dați seama.

Un obiect este format din:

  • Stat: Este reprezentat de atributele unui obiect. De asemenea, reflectă proprietățile unui obiect.
  • Comportament: Este reprezentat prin metodele unui obiect. De asemenea, reflectă răspunsul unui obiect la alte obiecte.
  • Identitate: Acesta dă un nume unic unui obiect și îi permite unui obiect să interacționeze cu alte obiecte.

Pentru a înțelege starea, comportamentul și identitatea, să luăm exemplul câinelui de clasă (explicat mai sus).

  • Identitatea poate fi considerată drept numele câinelui.
  • Starea sau Atributele pot fi considerate ca rasa, vârsta sau culoarea câinelui.
  • Comportamentul poate fi considerat dacă câinele mănâncă sau doarme.

Crearea unui obiect

Aceasta va crea un obiect numit obj din clasa Dog definită mai sus. Înainte de a ne aprofunda în obiecte și clase, să înțelegem câteva cuvinte cheie de bază care vor fi folosite în timpul lucrului cu obiecte și clase.

șiruri de caractere java concatenate
Python3
obj = Dog()>

Sinele Python

  1. Metodele de clasă trebuie să aibă un prim parametru suplimentar în definiția metodei. Nu dăm o valoare pentru acest parametru atunci când apelăm metoda, Python o oferă
  2. Dacă avem o metodă care nu acceptă argumente, atunci trebuie să avem un singur argument.
  3. Acesta este similar cu acest indicator în C++ și cu această referință în Java.

Când numim o metodă a acestui obiect ca myobject.method(arg1, arg2), aceasta este convertită automat de Python în MyClass.method(myobject, arg1, arg2) - despre asta este vorba despre sinele special.

Notă: Pentru mai multe informații, consultați sine în clasa Python

Metoda Python __init__

The metoda __init__ este similar cu constructorii din C++ și Java. Este rulat de îndată ce un obiect al unei clase este instanțiat. Metoda este utilă pentru a face orice inițializare pe care doriți să o faceți cu obiectul dvs. Acum să definim o clasă și să creăm câteva obiecte folosind metoda self și __init__.

șir de caractere java conține

Crearea unei clase și a unui obiect cu atribute de clasă și instanță

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))>

Ieșire
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Crearea de clase și obiecte cu metode

Aici, clasa Câinele este definită cu două atribute:

  • attr1 este un atribut de clasă setat la valoarea mamifer . Atributele clasei sunt partajate de toate instanțele clasei.
  • __init__ este o metodă specială (constructor) care inițializează o instanță a clasei Dog. Este nevoie de doi parametri: self (referitor la instanța creată) și nume (reprezentând numele câinelui). Parametrul nume este folosit pentru a atribui un atribut nume fiecărei instanțe de Dog.
    Metoda vorbire este definită în cadrul clasei Dog. Această metodă tipărește un șir care include numele instanței câine.

Codul șoferului începe prin crearea a două instanțe ale clasei Dog: Rodger și Tommy. Metoda __init__ este apelată pentru fiecare instanță pentru a-și inițializa atributele de nume cu numele furnizate. Metoda speak este apelată în ambele cazuri (Rodger.speak() și Tommy.speak()), determinând fiecare câine să imprime o declarație cu numele său.

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()>

Ieșire
My name is Rodger My name is Tommy>

Notă: Pentru mai multe informații, consultați Clase și obiecte Python

Moștenirea Python

În programarea orientată pe obiecte Python, moștenirea este capacitatea unei clase de a deriva sau de a moșteni proprietățile de la o altă clasă. Clasa care derivă proprietăți se numește clasă derivată sau clasă copil, iar clasa din care sunt derivate proprietățile se numește clasă de bază sau clasă părinte. Beneficiile moștenirii sunt:

  • Reprezintă bine relațiile din lumea reală.
  • Oferă reutilizarea unui cod. Nu trebuie să scriem același cod din nou și din nou. De asemenea, ne permite să adăugăm mai multe caracteristici la o clasă fără a o modifica.
  • Este de natură tranzitivă, ceea ce înseamnă că dacă clasa B moștenește de la o altă clasă A, atunci toate subclasele B ar moșteni automat din clasa A.

Tipuri de moștenire

  • Moștenire unică : Moștenirea la un singur nivel permite unei clase derivate să moștenească caracteristici de la o clasă cu un singur părinte.
  • Moștenire pe mai multe niveluri: Moștenirea pe mai multe niveluri permite unei clase derivate să moștenească proprietăți de la o clasă părinte imediată care, la rândul său, moștenește proprietăți din clasa sa părinte.
  • Moștenirea ierarhică: Moștenirea la nivel ierarhic permite mai multor clase derivate să moștenească proprietăți de la o clasă părinte.
  • Moștenire multiplă: Moștenirea pe mai multe niveluri permite unei clase derivate să moștenească proprietăți de la mai multe clase de bază.

Moștenirea în Python

În articolul de mai sus, am creat două clase și anume Persoană (clasa părinte) și Angajat (clasa Copil). Clasa Employee moștenește din clasa Persoană. Putem folosi metodele clasei de persoane prin clasa de angajat așa cum se vede în funcția de afișare din codul de mai sus. O clasă copil poate modifica, de asemenea, comportamentul clasei părinte, așa cum se vede prin metoda details().

Python3
# Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()>

Ieșire
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Notă: Pentru mai multe informații, consultați pagina noastră Moștenirea în Python tutorial.

str la int

Polimorfismul Python

În programarea orientată pe obiecte Python, polimorfismul înseamnă pur și simplu a avea mai multe forme. De exemplu, trebuie să determinăm dacă specia dată de păsări zboară sau nu, folosind polimorfismul putem face acest lucru folosind o singură funcție.

Polimorfismul în Python

Acest cod demonstrează conceptul de moștenire Python oops și suprascrierea metodei în clasele Python. Acesta arată cum subclasele pot suprascrie metodele definite în clasa lor părinte pentru a oferi un comportament specific în timp ce moștenesc alte metode din clasa părinte.

Python3
class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()>

Ieșire
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>

Notă: Pentru mai multe informații, consultați pagina noastră Polimorfismul în Python Tutorial.

Încapsulare Python

În programarea orientată pe obiecte Python, încapsularea este unul dintre conceptele fundamentale în programarea orientată pe obiecte (OOP). Descrie ideea de împachetare a datelor și metodele care funcționează asupra datelor într-o unitate. Acest lucru impune restricții privind accesarea directă a variabilelor și metodelor și poate preveni modificarea accidentală a datelor. Pentru a preveni schimbarea accidentală, variabila unui obiect poate fi modificată numai prin metoda unui obiect. Aceste tipuri de variabile sunt cunoscute ca variabile private.

O clasă este un exemplu de încapsulare, deoarece încapsulează toate datele care sunt funcții membre, variabile etc.

algoritm de sortare de îmbinare

Încapsulare în Python

În exemplul de mai sus, am creat variabila c ca atribut privat. Nici măcar nu putem accesa direct acest atribut și nici măcar nu îi putem schimba valoarea.

Python3
# Python program to # demonstrate private members # '__' double underscore represents private attribute.  # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class>

Ieșire
techcodeview.com>

Notă: pentru mai multe informații, consultați Încapsulare în Python Tutorial.

Abstracția datelor

Acesta ascunde detaliile inutile ale codului de la utilizator. De asemenea, atunci când nu vrem să oferim părți sensibile ale implementării codului nostru și aici a apărut abstracția datelor.

Abstracția datelor în Python poate fi realizată prin crearea unor clase abstracte.

Programare orientată pe obiecte în Python | Setul 2 (Ascunderea datelor și imprimarea obiectelor)