logo

Herència Python

L'herència és un aspecte important del paradigma orientat a objectes. L'herència proporciona la reutilització del codi al programa perquè podem utilitzar una classe existent per crear una nova classe en lloc de crear-la des de zero.

En herència, la classe fill adquireix les propietats i pot accedir a tots els membres de dades i funcions definides a la classe pare. Una classe fill també pot proporcionar la seva implementació específica a les funcions de la classe pare. En aquesta secció del tutorial, parlarem de l'herència en detall.

inclou programació en c

A Python, una classe derivada pot heretar la classe base només esmentant la base al claudàtor després del nom de la classe derivada. Considereu la sintaxi següent per heretar una classe base a la classe derivada.

Herència Python

Sintaxi

 class derived-class(base class): 

Una classe pot heretar diverses classes esmentant-les totes dins del parèntesi. Considereu la sintaxi següent.

Sintaxi

 class derive-class(, , ..... ): 

Exemple 1

 class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak() 

Sortida:

 dog barking Animal Speaking 

Herència multinivell de Python

L'herència multinivell és possible a Python com altres llenguatges orientats a objectes. L'herència multinivell s'arxiva quan una classe derivada hereta una altra classe derivada. No hi ha límit en el nombre de nivells fins als quals s'arxiva l'herència multinivell a Python.

Herència Python

La sintaxi de l'herència multinivell es mostra a continuació.

Sintaxi

 class class1: class class2(class1): class class3(class2): . . 

Exemple

 class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat() 

Sortida:

 dog barking Animal Speaking Eating bread... 

Python Herència múltiple

Python ens proporciona la flexibilitat per heretar diverses classes base a la classe secundària.

Herència Python

A continuació es mostra la sintaxi per realitzar l'herència múltiple.

Sintaxi

 class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN): 

Exemple

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20)) 

Sortida:

 30 200 0.5 

El mètode issubclass(sub,sup).

El mètode issubclass(sub, sup) s'utilitza per comprovar les relacions entre les classes especificades. Retorna true si la primera classe és la subclasse de la segona classe, i false en cas contrari.

Considereu l'exemple següent.

Exemple

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2)) 

Sortida:

 True False 

El mètode isinstance (obj, classe).

El mètode isinstance() s'utilitza per comprovar la relació entre els objectes i les classes. Retorna true si el primer paràmetre, és a dir, obj és la instància del segon paràmetre, és a dir, class.

Considereu l'exemple següent.

Exemple

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived)) 

Sortida:

 True 

Anulació del mètode

Podem proporcionar alguna implementació específica del mètode de classe pare a la nostra classe fill. Quan el mètode de classe pare es defineix a la classe fill amb alguna implementació específica, el concepte s'anomena substitució del mètode. És possible que hàgim de realitzar una substitució de mètodes en l'escenari en què es necessita una definició diferent d'un mètode de classe pare a la classe secundària.

Considereu l'exemple següent per realitzar una substitució de mètodes a Python.

Exemple

 class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak() 

Sortida:

 Barking 

Vida real Exemple de substitució de mètodes

 class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi()); 

Sortida:

 Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 

Abstracció de dades en Python

L'abstracció és un aspecte important de la programació orientada a objectes. A Python, també podem ocultar dades afegint el guió baix doble (___) com a prefix a l'atribut que s'ha d'amagar. Després d'això, l'atribut no serà visible fora de la classe a través de l'objecte.

declaració bash if

Considereu l'exemple següent.

Exemple

 class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display() 

Sortida:

 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'