logo

Conceptes de Python OOPs

La programació orientada a objectes és un concepte fonamental en Python, que permet als desenvolupadors crear aplicacions modulars, mantenibles i escalables. En comprendre els principis bàsics de la POO (classes, objectes, herència, encapsulació, polimorfisme i abstracció), els programadors poden aprofitar tot el potencial de les capacitats de POO de Python per dissenyar solucions elegants i eficients a problemes complexos.

Què és la programació orientada a objectes a Python?

A Python, la programació orientada a objectes (OOP) és un paradigma de programació que utilitza objectes i classes en programació. Pretén implementar entitats del món real com l'herència, els polimorfismes, l'encapsulació, etc. en la programació. El concepte principal de programació orientada a objectes (OOP) o conceptes oops a Python és lligar les dades i les funcions que funcionen juntes com una unitat única perquè cap altra part del codi pugui accedir a aquestes dades.



mylive cricket

Conceptes OOPs en Python

  • Classe en Python
  • Objectes en Python
  • Polimorfisme en Python
  • Encapsulació en Python
  • Herència en Python
  • Abstracció de dades en Python
OOP de Python

Conceptes de Python OOPs

Classe Python

Una classe és una col·lecció d'objectes. Una classe conté els plànols o el prototip a partir dels quals s'estan creant els objectes. És una entitat lògica que conté alguns atributs i mètodes.

Per entendre la necessitat de crear una classe, considerem un exemple, suposem que volíeu fer un seguiment del nombre de gossos que poden tenir diferents atributs com la raça i l'edat. Si s'utilitza una llista, el primer element podria ser la raça del gos mentre que el segon element podria representar la seva edat. Suposem que hi ha 100 gossos diferents, llavors com sabríeu quin element se suposa que és quin? Què passa si volguéssiu afegir altres propietats a aquests gossos? Això manca d'organització i és la necessitat exacta de les classes.



Alguns punts de la classe Python:

  • Les classes es creen per paraula clau class.
  • Els atributs són les variables que pertanyen a una classe.
  • Els atributs sempre són públics i es pot accedir mitjançant l'operador de punt (.). Ex.: La meva classe.El meu atribut

Sintaxi de definició de classe:

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

Creació d'una classe buida en Python

A l'exemple anterior, hem creat una classe anomenada Dog utilitzant la paraula clau class.



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

Objectes Python

A la programació orientada a objectes Python, l'objecte és una entitat que té un estat i un comportament associats. Pot ser qualsevol objecte del món real com un ratolí, un teclat, una cadira, una taula, un bolígraf, etc. Els nombres enters, cadenes, nombres de coma flotant, fins i tot matrius i diccionaris, són objectes. Més concretament, qualsevol nombre enter o qualsevol cadena individual és un objecte. El número 12 és un objecte, la cadena Hola, món és un objecte, una llista és un objecte que pot contenir altres objectes, etc. Heu estat utilitzant objectes durant tot el temps i potser no us n'adoneu.

Un objecte està format per:

  • Estat: Es representa amb els atributs d'un objecte. També reflecteix les propietats d'un objecte.
  • Comportament: Es representa amb els mètodes d'un objecte. També reflecteix la resposta d'un objecte a altres objectes.
  • Identitat: Dóna un nom únic a un objecte i permet que un objecte interactuï amb altres objectes.

Per entendre l'estat, el comportament i la identitat, prenem l'exemple del gos de classe (explicat més amunt).

  • La identitat es pot considerar com el nom del gos.
  • L'estat o els atributs es poden considerar com la raça, l'edat o el color del gos.
  • El comportament es pot considerar si el gos està menjant o dormint.

Creació d'un objecte

Això crearà un objecte anomenat obj de la classe Dog definida anteriorment. Abans d'aprofundir en els objectes i les classes, entenem algunes paraules clau bàsiques que s'utilitzaran mentre treballem amb objectes i classes.

Python 3
obj = Dog()>

El jo Python

  1. Els mètodes de classe han de tenir un primer paràmetre addicional a la definició del mètode. No donem cap valor per a aquest paràmetre quan cridem el mètode, Python el proporciona
  2. Si tenim un mètode que no pren arguments, encara hem de tenir un argument.
  3. Això és similar a aquest punter en C++ i aquesta referència a Java.

Quan anomenem un mètode d'aquest objecte com a myobject.method(arg1, arg2), Python el converteix automàticament en MyClass.method(myobject, arg1, arg2): això és tot el que tracta el jo especial.

Nota: Per a més informació, consulteu jo mateix a la classe de Python

El mètode Python __init__

El mètode __init__ és similar als constructors en C++ i Java. S'executa tan bon punt s'instancia un objecte d'una classe. El mètode és útil per fer qualsevol inicialització que vulgueu fer amb el vostre objecte. Ara definim una classe i creem alguns objectes utilitzant el mètode self i __init__.

Creació d'una classe i un objecte amb atributs de classe i instància

Python 3
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))>

Sortida
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Creació de classes i objectes amb mètodes

Aquí, la classe The Dog es defineix amb dos atributs:

  • attr1 és un atribut de classe establert al valor mamífer . Els atributs de classe els comparteixen totes les instàncies de la classe.
  • __init__ és un mètode especial (constructor) que inicialitza una instància de la classe Dog. Pren dos paràmetres: self (en referència a la instància que s'està creant) i nom (que representa el nom del gos). El paràmetre de nom s'utilitza per assignar un atribut de nom a cada instància de Dog.
    El mètode de parlar es defineix dins de la classe Dog. Aquest mètode imprimeix una cadena que inclou el nom de la instància del gos.

El codi del conductor comença creant dues instàncies de la classe Dog: Rodger i Tommy. El mètode __init__ es crida per a cada instància per inicialitzar els seus atributs de nom amb els noms proporcionats. El mètode speak s'anomena en ambdós casos (Rodger.speak() i Tommy.speak()), fent que cada gos imprimeixi una declaració amb el seu nom.

Python 3
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()>

Sortida
My name is Rodger My name is Tommy>

Nota: Per a més informació, consulteu Classes i objectes de Python

f pel·lícules

Herència Python

A la programació orientada a objectes de Python, l'herència és la capacitat d'una classe per derivar o heretar les propietats d'una altra classe. La classe que deriva propietats s'anomena classe derivada o classe fill i la classe de la qual es deriven les propietats s'anomena classe base o classe pare. Els beneficis de l'herència són:

  • Representa bé les relacions del món real.
  • Proporciona la reutilització d'un codi. No hem d'escriure el mateix codi una vegada i una altra. A més, ens permet afegir més funcions a una classe sense modificar-la.
  • És de naturalesa transitiva, el que significa que si la classe B hereta d'una altra classe A, llavors totes les subclasses de B heretarien automàticament de la classe A.

Tipus d'herència

  • Herència única : l'herència d'un sol nivell permet que una classe derivada hereti característiques d'una classe monoparental.
  • Herència multinivell: L'herència multinivell permet que una classe derivada hereti propietats d'una classe pare immediata que al seu torn hereta propietats de la seva classe pare.
  • Herència jeràrquica: L'herència a nivell jeràrquic permet que més d'una classe derivada hereti propietats d'una classe pare.
  • Herència múltiple: L'herència de diversos nivells permet que una classe derivada hereti propietats de més d'una classe base.

Herència en Python

A l'article anterior, hem creat dues classes, és a dir, Persona (classe pare) i Empleat (classe infantil). La classe Employee hereta de la classe Persona. Podem utilitzar els mètodes de la classe de persona a través de la classe d'empleat tal com es veu a la funció de visualització del codi anterior. Una classe fill també pot modificar el comportament de la classe pare tal com es veu a través del mètode details().

Python 3
# 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()>

Sortida
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Nota: Per a més informació, consulteu el nostre Herència en Python tutorial.

Polimorfisme de Python

A la programació orientada a objectes Python, el polimorfisme significa simplement tenir moltes formes. Per exemple, hem de determinar si l'espècie donada d'ocells volen o no, utilitzant el polimorfisme ho podem fer amb una única funció.

Polimorfisme en Python

Aquest codi demostra el concepte d'herència de Python oops i la substitució del mètode a les classes de Python. Mostra com les subclasses poden substituir mètodes definits a la seva classe principal per proporcionar un comportament específic mentre encara hereten altres mètodes de la classe pare.

Python 3
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()>

Sortida
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.>

Nota: Per a més informació, consulteu el nostre Polimorfisme en Python Tutorial.

Encapsulació de Python

A la programació orientada a objectes de Python, l'encapsulació és un dels conceptes fonamentals de la programació orientada a objectes (OOP). Descriu la idea d'embolcall de dades i els mètodes que funcionen amb dades dins d'una unitat. Això posa restriccions a l'accés directe a variables i mètodes i pot evitar la modificació accidental de les dades. Per evitar canvis accidentals, la variable d'un objecte només es pot canviar pel mètode d'un objecte. Aquest tipus de variables es coneixen com a variables privades.

Una classe és un exemple d'encapsulació, ja que encapsula totes les dades que són funcions membres, variables, etc.

Encapsulació en Python

A l'exemple anterior, hem creat la variable c com a atribut privat. Ni tan sols podem accedir directament a aquest atribut i ni tan sols podem canviar-ne el valor.

Python 3
# 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>

Sortida
techcodeview.com>

Nota: per a més informació, consulteu el nostre Encapsulació en Python Tutorial.

Abstracció de dades

Oculta els detalls del codi innecessaris per a l'usuari. A més, quan no volem donar a conèixer parts sensibles de la nostra implementació de codi i aquí és on va venir l'abstracció de dades.

L'abstracció de dades en Python es pot aconseguir mitjançant la creació de classes abstractes.

Programació Orientada a Objectes en Python | Set 2 (amagat de dades i impressió d'objectes)