logo

Python arv

Arv er et vigtigt aspekt af det objektorienterede paradigme. Arv giver kodegenanvendelighed til programmet, fordi vi kan bruge en eksisterende klasse til at oprette en ny klasse i stedet for at oprette den fra bunden.

Ved arv erhverver den underordnede klasse egenskaberne og kan få adgang til alle datamedlemmer og funktioner, der er defineret i den overordnede klasse. En underklasse kan også levere sin specifikke implementering til funktionerne i den overordnede klasse. I dette afsnit af selvstudiet vil vi diskutere arv i detaljer.

hvad er mappeindsendelse

I python kan en afledt klasse arve basisklassen ved blot at nævne basen i parentesen efter det afledte klassenavn. Overvej følgende syntaks for at arve en basisklasse til den afledte klasse.

Python arv

Syntaks

 class derived-class(base class): 

En klasse kan arve flere klasser ved at nævne dem alle inden for parentesen. Overvej følgende syntaks.

Syntaks

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

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

Produktion:

 dog barking Animal Speaking 

Python Multi-Level arv

Multi-Level arv er muligt i python ligesom andre objektorienterede sprog. Arv på flere niveauer arkiveres, når en afledt klasse arver en anden afledt klasse. Der er ingen begrænsning på antallet af niveauer, op til hvilke, multi-level arv arkiveres i python.

Python arv

Syntaksen for arv på flere niveauer er angivet nedenfor.

Syntaks

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

Eksempel

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

Produktion:

 dog barking Animal Speaking Eating bread... 

Python Multiple arv

Python giver os fleksibiliteten til at arve flere basisklasser i underklassen.

Python arv

Syntaksen til at udføre multipel nedarvning er angivet nedenfor.

Syntaks

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

Eksempel

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

Produktion:

 30 200 0.5 

Metoden issubclass(sub,sup).

Metoden issubclass(sub, sup) bruges til at kontrollere relationerne mellem de specificerede klasser. Det returnerer sandt, hvis den første klasse er underklassen af ​​den anden klasse, og ellers falsk.

Overvej følgende eksempel.

Eksempel

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

Produktion:

 True False 

Metoden isinstance (obj, klasse).

Metoden isinstance() bruges til at kontrollere forholdet mellem objekterne og klasserne. Den returnerer sand, hvis den første parameter, dvs. obj, er forekomsten af ​​den anden parameter, dvs. klasse.

Overvej følgende eksempel.

stak java

Eksempel

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

Produktion:

 True 

Metode tilsidesættelse

Vi kan levere en specifik implementering af forældreklassemetoden i vores børneklasse. Når den overordnede klassemetode er defineret i den underordnede klasse med en eller anden specifik implementering, så kaldes konceptet for metodeoverstyring. Vi skal muligvis udføre metodetilsidesættelse i scenariet, hvor der er behov for en anden definition af en overordnet klassemetode i den underordnede klasse.

Overvej følgende eksempel for at udføre metodetilsidesættelse i python.

Eksempel

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

Produktion:

 Barking 

Real Life Eksempel på metodetilsidesættelse

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

Produktion:

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

Dataabstraktion i python

Abstraktion er et vigtigt aspekt af objektorienteret programmering. I python kan vi også udføre dataskjul ved at tilføje den dobbelte understregning (___) som et præfiks til den attribut, der skal skjules. Efter dette vil attributten ikke være synlig uden for klassen gennem objektet.

Overvej følgende eksempel.

Eksempel

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

Produktion:

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