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