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