python oops concepts python classes
Conceptes OOPs a Python: classes i objectes de Python, herència, sobrecàrrega, anul·lació i ocultació de dades
A l 'anterior tutorial presentem alguns dels Operacions d’entrada / sortida que proporciona Python.
Vam conèixer com utilitzar aquestes funcions per llegir les dades de l’usuari o de fonts externes i també com escriure aquestes dades en fonts externes. A més, vam aprendre a dividir un enorme codi en mètodes més petits amb funcions i a trucar-hi o accedir-hi.
Lectures addicionals => Gamma explícita de tutorials gratuïts de formació sobre Python
En aquest tutorial, parlarem del concepte Advanced Python anomenat OOP i de diferents tipus de conceptes Oops disponibles a Python i de com i on utilitzar-los.
Què aprendreu:
- Mireu els tutorials de VÍDEO
- Classes i objectes
- Constructor a Python
- Herència
- Mètode de sobrecàrrega a Python
- Substitució del mètode a Python
- Ocultació de dades a Python
- Conclusió
- Lectura recomanada
Mireu els tutorials de VÍDEO
Vídeo núm. 1: classe, objectes i constructor a Python
Vídeo # 2: Concepte d’herència a Python
Vídeo núm. 3: sobrecàrrega, substitució i ocultació de dades a Python
Classes i objectes
- Python és un llenguatge de programació orientat a objectes on la programació posa més èmfasi en els objectes.
- Gairebé tot el que hi ha a Python són objectes.
Classes
Class en Python és una col·lecció d’objectes, podem pensar en una classe com un pla, un esbós o un prototip. Conté tots els detalls d’un objecte.
A l’exemple del món real, Animal és una classe, ja que tenim diferents tipus d’animals al món i tots aquests pertanyen a una classe anomenada Animal.
Definir una classe
A Python, hauríem de definir una classe amb la paraula clau 'classe'.
Sintaxi:
class classname: #Collection of statements or functions or classes
Exemple:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
A l'exemple anterior, hem declarat la classe anomenada 'Myclass' i hem declarat i definit algunes variables i funcions respectivament.
Per accedir a aquestes funcions o variables presents dins de la classe, podem utilitzar el nom de la classe creant-ne un objecte.
En primer lloc, vegem com accedir als que fan servir el nom de la classe.
Exemple:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Sortida
10
Sortida:
Objectes
Un objecte sol ser una instància d’una classe. S'utilitza per accedir a tot el que hi ha a l'interior de la classe.
Creació d’un objecte
Sintaxi:
variablename = classname
Exemple:
ob = MyClass()
Això crearà un objecte d’instància nou anomenat ‘ob’. Mitjançant aquest nom d’objecte podem accedir a tots els atributs presents a la classe MyClass.
Exemple:
class MyClass: a = 10 b = 20 def add(self): sum = self.a + self.b print(sum) #Creating an object of class MyClass ob = MyClass() #Accessing function and variables present inside MyClass using the object print(ob.a) print(ob.b) ob.add()
Sortida:
10
20
30
Sortida:
Constructor a Python
El constructor de Python és un mètode especial que s’utilitza per inicialitzar els membres d’una classe durant el temps d’execució quan es crea un objecte.
A Python, tenim alguns mètodes de classe integrats especials que comencen amb un subratllat doble (__) i tenen un significat especial a Python.
El nom del constructor sempre serà __init __ ().
Totes les classes han de tenir un constructor, fins i tot si no el creeu explícitament, crearà un constructor per defecte per si mateix.
Exemple:
class MyClass: sum = 0 def __init__ (self, a, b): self.sum = a+b def printSum(self): print(“Sum of a and b is: ”, self.sum) #Creating an object of class MyClass ob = MyClass(12, 15) ob.printSum()
Sortida:
La suma d’a i b és: 27
Sortida:
Si observem a l'exemple anterior, no cridem al mètode __init __ (), perquè es cridarà automàticament quan creem un objecte a aquesta classe i inicialitzem els membres de les dades si n'hi ha.
Recordeu sempre que un constructor mai no retornarà cap valor, de manera que no conté cap declaració de retorn.
Herència
L’herència és un dels conceptes més poderosos de les POO.
Una classe que hereta les propietats d’una altra classe s’anomena Herència.
La classe que hereta les propietats s’anomena classe / subclasse fill i la classe de la qual s’hereten les propietats s’anomena classe pare / classe base.
Python proporciona tres tipus d'herència:
- Herència única
- Herència multinivell
- Herència múltiple
Lectura recomanada = >> Herència a Java
# 1) Herència única
A Herència única, una classe heretarà les propietats d’una sola classe.
Exemple:
class Operations: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: “, sum) class MyClass(Operations): c = 50 d = 10 def sub(self): sub = self.c – self.d print(“Subtraction of c and d is: ”, sub) ob = MyClass() ob.add() ob.sub()
Sortida:
La suma de a i b és: 30
La resta de c i d és: 40
Sortida:
A l'exemple anterior, heretem les propietats de la classe 'Operacions' a la classe 'La meva classe'.
Per tant, podem accedir a tots els mètodes o declaracions presents a la classe 'Operacions' mitjançant els objectes MyClass.
# 2) Herència multinivell
En l’herència multinivell, una o més classes actuen com una classe base.
El que significa que la segona classe heretarà les propietats de la primera classe i la tercera classe heretarà les propietats de la segona classe. Per tant, la segona classe actuarà tant com a classe Parental com infantil.
com obrir el fitxer .dat
Exemple:
class Addition: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: ”, sum) class Subtraction(Addition): def sub(self): sub = self.b-self.a print(“Subtraction of a and b is: ”, sub) class Multiplication(Subtraction): def mul(self): multi = self.a * self.b print(“Multiplication of a and b is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
Sortida:
La suma de a i b és: 30
La resta de a i b és: 10
La multiplicació de a i b és: 200
Sortida:
A l'exemple anterior, la classe 'Resta' hereta les propietats de la classe 'Suma' i la classe 'Multiplicació' hereta les propietats de la classe 'Resta'. Així, doncs, la classe 'Resta' actuarà tant com a classe base com com a classe derivada.
# 3) Herència múltiple
La classe que hereta les propietats de diverses classes s’anomena Herència múltiple.
Lectures addicionals = >> Java admet l’herència múltiple?
Exemple:
class Addition: a = 10 b = 20 def add(self): sum = self. a+ self.b print(“Sum of a and b is: “, sum) class Subtraction(): c = 50 d = 10 def sub(self): sub = self.c-self.d print(“Subtraction of c and d is: ”, sub) class Multiplication(Addition,Subtraction): def mul(self): multi = self.a * self.c print(“Multiplication of a and c is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
Sortida:
La suma de a i b és: 30
La resta de c i d és: 10
La multiplicació de a i c és: 500
Sortida:
Mètode de sobrecàrrega a Python
Es denomina sobrecàrrega de mètode a diversos mètodes amb el mateix nom però amb un tipus de paràmetre diferent o un nombre diferent de paràmetres
Exemple:
def product(a, b): p = a*b print(p) def product(a, b, c): p = a*b*c print(p) #Gives you an error saying one more argument is missing as it updated to the second function #product(2, 3) product(2, 3, 5)
Sortida:
30
Sortida:
Sortida:
La sobrecàrrega del mètode no és compatible amb Python, perquè si veiem a l’exemple anterior hem definit dues funcions amb el mateix nom ‘producte’ però amb un nombre de paràmetres diferent.
Però a Python, s’actualitzarà l’última definició, per tant la funció producte (a, b) esdevindrà inútil.
Substitució del mètode a Python
Si un mètode de subclasse té el mateix nom que es declara en el mètode de superclasse, s'anomena mètode sobreescrit
Per aconseguir la substitució del mètode hem d’utilitzar l’herència.
Exemple:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Sortida:
Estic a B.
Sortida:
Ocultació de dades a Python
Amagar dades significa fer que les dades siguin privades perquè no siguin accessibles per als altres membres de la classe. Només es pot accedir a la classe on es declara.
A Python, si volem amagar la variable, hem d’escriure doble guió baix (__) abans del nom de la variable.
Exemple:
Class MyClass: __num = 10 def add(self, a): sum = self.__num + a print(sum) ob = MyClass() ob.add(20) print(ob.__num) #The above statement gives an error because we are trying to access private variable outside the class
Sortida:
30
Traceback (última trucada més recent):
Arxiu 'DataHiding.py', línia 10, a
imprimir (si es deu .__)
AttributeError: té la instància MyClass
cap atribut ‘__num
Sortida:
Conclusió
La classe és un pla o plantilla que conté tots els detalls d’un objecte, on l’objecte és una instància d’una classe.
- Si volem aconseguir les propietats d’una altra classe en una classe, això es pot aconseguir per herència.
- L’herència és de 3 tipus: herència única, herència multinivell i herència múltiple.
- La sobrecàrrega del mètode no és compatible amb Python.
- La substitució del mètode s'utilitza per anul·lar la implementació de la mateixa funció que es defineix en una altra classe.
- Podem fer que els atributs de dades siguin privats o amagar-los de manera que no siguin accessibles fora de la classe on es defineix.
El nostre proper tutorial explicarà més detalladament els conceptes addicionals de Python.
Lectura recomanada
- Variables de Python
- Tutorial de Python DateTime amb exemples
- Funcions de cadena de Python
- Tutorial Python per a principiants (entrenament pràctic GRATU PyT en Python)
- Instruccions de control de Python (Python Continue, Break and Pass)
- Operadors de Python
- Funcions Python
- Introducció i procés d’instal·lació de Python