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