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