logo

Python Arv

Arv är en viktig aspekt av det objektorienterade paradigmet. Arv ger kodåteranvändbarhet till programmet eftersom vi kan använda en befintlig klass för att skapa en ny klass istället för att skapa den från början.

Vid arv förvärvar den underordnade klassen egenskaperna och kan komma åt alla datamedlemmar och funktioner som definieras i den överordnade klassen. En barnklass kan också tillhandahålla sin specifika implementering till funktionerna i den överordnade klassen. I det här avsnittet av handledningen kommer vi att diskutera arv i detalj.

linux ändra katalognamn

I python kan en härledd klass ärva basklassen genom att bara nämna basen inom parentesen efter det härledda klassnamnet. Överväg följande syntax för att ärva en basklass till den härledda klassen.

Python Arv

Syntax

 class derived-class(base class): 

En klass kan ärva flera klasser genom att nämna alla inom parentesen. Tänk på följande syntax.

Syntax

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

Exempel 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

Arv på flera nivåer är möjligt i python som andra objektorienterade språk. Arv på flera nivåer arkiveras när en härledd klass ärver en annan härledd klass. Det finns ingen gräns för antalet nivåer upp till vilka flernivåarvet arkiveras i python.

Python Arv

Syntaxen för arv på flera nivåer ges nedan.

Syntax

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

Exempel

 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 Multipelt arv

Python ger oss flexibiliteten att ärva flera basklasser i barnklassen.

Python Arv

Syntaxen för att utföra multipelt arv ges nedan.

Syntax

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

Exempel

 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) används för att kontrollera relationerna mellan de angivna klasserna. Den returnerar sant om den första klassen är underklassen till den andra klassen, och annars falskt.

Betrakta följande exempel.

Exempel

 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, klass).

Metoden isinstance() används för att kontrollera förhållandet mellan objekten och klasserna. Den returnerar sant om den första parametern, dvs obj är instansen av den andra parametern, dvs klass.

Betrakta följande exempel.

.tostring java

Exempel

 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 

Metod Åsidosättande

Vi kan tillhandahålla någon specifik implementering av föräldraklassmetoden i vår barnklass. När den överordnade klassmetoden är definierad i den underordnade klassen med någon specifik implementering, kallas konceptet metodöverstyrning. Vi kan behöva utföra metodöverstyrning i scenariot där en annan definition av en överordnad klassmetod behövs i den underordnade klassen.

Betrakta följande exempel för att utföra metodöverstyrning i python.

Exempel

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

Produktion:

 Barking 

Verkliga livet Exempel på överordnad metod

 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 är en viktig aspekt av objektorienterad programmering. I python kan vi även utföra datadöljning genom att lägga till det dubbla understrecket (___) som ett prefix till attributet som ska döljas. Efter detta kommer attributet inte att vara synligt utanför klassen genom objektet.

Betrakta följande exempel.

Exempel

 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'