Python arv

Python arv

Arv er et viktig aspekt ved det objektorienterte paradigmet. Arv gir kodegjenbrukbarhet til programmet fordi vi kan bruke en eksisterende klasse til å lage en ny klasse i stedet for å lage den fra bunnen av.

Ved arv anskaffer den underordnede klassen egenskapene og kan få tilgang til alle datamedlemmene og funksjonene som er definert i den overordnede klassen. En barneklasse kan også gi sin spesifikke implementering til funksjonene til overordnet klasse. I denne delen av opplæringen vil vi diskutere arv i detalj.

I python kan en avledet klasse arve basisklassen ved å bare nevne basen i parentesen etter det avledede klassenavnet. Tenk på følgende syntaks for å arve en basisklasse inn i den avledede klassen.

Python arv

Syntaks

 class derived-class(base class):  

En klasse kan arve flere klasser ved å nevne alle innenfor parentesen. Tenk på 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()  

Produksjon:

 dog barking Animal Speaking  

Python Multi-Level arv

Multi-Level arv er mulig i python som andre objektorienterte språk. Flernivåarv arkiveres når en avledet klasse arver en annen avledet klasse. Det er ingen begrensning på antall nivåer opp til som flernivåarven arkiveres i python.

Python arv

Syntaksen for flernivåarv er gitt 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()  

Produksjon:

 dog barking Animal Speaking Eating bread...  

Python Multiple arv

Python gir oss fleksibiliteten til å arve flere basisklasser i barneklassen.

Python arv

Syntaksen for å utføre multippel arv er gitt 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))  

Produksjon:

 30 200 0.5  

Metoden issubclass(sub,sup).

Metoden issubclass(sub, sup) brukes til å sjekke relasjonene mellom de spesifiserte klassene. Den returnerer sant hvis den første klassen er underklassen til den andre klassen, og ellers usann.

Tenk på 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))  

Produksjon:

 True False  

Metoden isinstance (obj, klasse).

Metoden isinstance() brukes til å sjekke forholdet mellom objektene og klassene. Den returnerer sann hvis den første parameteren, dvs. obj er forekomsten av den andre parameteren, dvs. klasse.

Tenk på 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(isinstance(d,Derived))  

Produksjon:

 True  

Metodeoverstyring

Vi kan gi noen spesifikk implementering av foreldreklassemetoden i barneklassen vår. Når den overordnede klassemetoden er definert i barneklassen med en spesifikk implementering, kalles konseptet metodeoverstyring. Vi må kanskje utføre metodeoverstyring i scenariet der en annen definisjon av en overordnet klassemetode er nødvendig i barneklassen.

Tenk på følgende eksempel for å utføre metodeoverstyring i python.

Eksempel

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

Produksjon:

 Barking  

Real Life Eksempel på metodeoverstyring

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

Produksjon:

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

Dataabstraksjon i python

Abstraksjon er et viktig aspekt ved objektorientert programmering. I python kan vi også utføre dataskjuling ved å legge til den doble understrekingen (___) som et prefiks til attributtet som skal skjules. Etter dette vil ikke attributtet være synlig utenfor klassen gjennom objektet.

Tenk på 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()  

Produksjon:

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