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