logo

Moștenirea Python

Moștenirea este un aspect important al paradigmei orientate pe obiecte. Moștenirea oferă programului reutilizarea codului, deoarece putem folosi o clasă existentă pentru a crea o clasă nouă în loc să o creăm de la zero.

În moștenire, clasa copil dobândește proprietățile și poate accesa toți membrii de date și funcțiile definite în clasa părinte. O clasă copil poate oferi, de asemenea, implementarea sa specifică pentru funcțiile clasei părinte. În această secțiune a tutorialului, vom discuta în detaliu despre moștenire.

java obține ora curentă

În python, o clasă derivată poate moșteni clasa de bază doar menționând baza în paranteză după numele clasei derivate. Luați în considerare următoarea sintaxă pentru a moșteni o clasă de bază în clasa derivată.

Moștenirea Python

Sintaxă

 class derived-class(base class): 

O clasă poate moșteni mai multe clase, menționându-le pe toate în paranteză. Luați în considerare următoarea sintaxă.

Sintaxă

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

Exemplul 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() 

Ieșire:

 dog barking Animal Speaking 

Moștenire Python pe mai multe niveluri

Moștenirea pe mai multe niveluri este posibilă în Python, ca și alte limbaje orientate pe obiecte. Moștenirea pe mai multe niveluri este arhivată atunci când o clasă derivată moștenește o altă clasă derivată. Nu există limită pentru numărul de niveluri până la care moștenirea pe mai multe niveluri este arhivată în python.

Moștenirea Python

Sintaxa moștenirii pe mai multe niveluri este dată mai jos.

Sintaxă

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

Exemplu

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

Ieșire:

 dog barking Animal Speaking Eating bread... 

Python Moștenire multiplă

Python ne oferă flexibilitatea de a moșteni mai multe clase de bază în clasa copil.

Moștenirea Python

Sintaxa pentru a efectua moștenirea multiplă este dată mai jos.

Sintaxă

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

Exemplu

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

Ieșire:

 30 200 0.5 

Metoda issubclass(sub,sup).

Metoda issubclass(sub, sup) este folosită pentru a verifica relațiile dintre clasele specificate. Returnează adevărat dacă prima clasă este subclasa a doua clasă, iar fals în caz contrar.

Luați în considerare următorul exemplu.

Exemplu

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

Ieșire:

 True False 

Metoda isinstance (obj, clasă).

Metoda isinstance() este folosită pentru a verifica relația dintre obiecte și clase. Returnează adevărat dacă primul parametru, adică obj este instanța celui de-al doilea parametru, adică clasa.

Luați în considerare următorul exemplu.

Exemplu

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

Ieșire:

șir de concatenare în java
 True 

Suprascrierea metodei

Putem oferi o implementare specifică a metodei clasei părinte în clasa noastră copil. Când metoda clasei părinte este definită în clasa copil cu o implementare specifică, atunci conceptul se numește suprascriere metodei. Este posibil să fie nevoie să efectuăm o suprascriere a metodei în scenariul în care este necesară definiția diferită a unei metode de clasă părinte în clasa copil.

Luați în considerare următorul exemplu pentru a efectua suprascrierea metodei în python.

Exemplu

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

Ieșire:

 Barking 

Viața reală Exemplu de înlocuire a metodei

 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()); 

Ieșire:

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

Abstracția datelor în python

Abstracția este un aspect important al programării orientate pe obiecte. În python, putem realiza și ascunderea datelor adăugând liniuța de subliniere dublă (___) ca prefix la atributul care urmează să fie ascuns. După aceasta, atributul nu va fi vizibil în afara clasei prin obiect.

Luați în considerare următorul exemplu.

Exemplu

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

Ieșire:

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