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