logo

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.

avkorte og slette forskjellen

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.

gjør mens 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)) 

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'