logo

Python dedovanje

Dedovanje je pomemben vidik objektno usmerjene paradigme. Dedovanje programu omogoča ponovno uporabo kode, ker lahko uporabimo obstoječi razred za ustvarjanje novega razreda, namesto da ga ustvarimo iz nič.

Pri dedovanju podrejeni razred pridobi lastnosti in lahko dostopa do vseh podatkovnih članov in funkcij, definiranih v nadrejenem razredu. Podrejeni razred lahko zagotovi tudi svojo specifično izvedbo za funkcije nadrejenega razreda. V tem delu vadnice bomo podrobno razpravljali o dedovanju.

kako izstopiti iz zanke while java

V pythonu lahko izpeljani razred podeduje osnovni razred samo z omembo osnove v oklepaju za imenom izpeljanega razreda. Upoštevajte naslednjo sintakso za podedovanje osnovnega razreda v izpeljani razred.

Python dedovanje

Sintaksa

 class derived-class(base class): 

Razred lahko podeduje več razredov, če jih vse omenimo v oklepaju. Upoštevajte naslednjo sintakso.

Sintaksa

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

Primer 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() 

Izhod:

 dog barking Animal Speaking 

Python večnivojsko dedovanje

Večnivojsko dedovanje je možno v pythonu, tako kot v drugih objektno usmerjenih jezikih. Večnivojsko dedovanje se arhivira, ko izpeljani razred podeduje drug izpeljan razred. Število nivojev, do katerih se v pythonu arhivira večnivojsko dedovanje, ni omejeno.

Python dedovanje

Sintaksa večnivojskega dedovanja je podana spodaj.

Sintaksa

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

Primer

 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() 

Izhod:

 dog barking Animal Speaking Eating bread... 

Python večkratno dedovanje

Python nam nudi prilagodljivost za dedovanje več osnovnih razredov v podrejenem razredu.

Python dedovanje

Sintaksa za izvedbo večkratnega dedovanja je podana spodaj.

Sintaksa

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

Primer

 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)) 

Izhod:

 30 200 0.5 

Metoda issubclass(sub,sup).

Metoda issubclass(sub, sup) se uporablja za preverjanje odnosov med navedenimi razredi. Vrne true, če je prvi razred podrazred drugega razreda, in false v nasprotnem primeru.

Razmislite o naslednjem primeru.

Primer

 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)) 

Izhod:

 True False 

Metoda isinstance (obj, razred).

Metoda isinstance() se uporablja za preverjanje razmerja med objekti in razredi. Vrne true, če je prvi parameter, tj. obj, primerek drugega parametra, tj. razreda.

Razmislite o naslednjem primeru.

Primer

 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)) 

Izhod:

 True 

Preglasitev metode

V našem podrejenem razredu lahko zagotovimo nekaj specifične izvedbe metode nadrejenega razreda. Ko je metoda nadrejenega razreda definirana v podrejenem razredu z določeno izvedbo, se koncept imenuje preglasitev metode. Morda bomo morali izvesti preglasitev metode v scenariju, kjer je v podrejenem razredu potrebna drugačna definicija metode nadrejenega razreda.

Razmislite o naslednjem primeru za izvedbo preglasitve metode v pythonu.

Primer

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

Izhod:

 Barking 

Primer preglasitve metode v resničnem življenju

 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()); 

Izhod:

 Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 

Abstrakcija podatkov v pythonu

Abstrakcija je pomemben vidik objektno usmerjenega programiranja. V pythonu lahko izvedemo tudi skrivanje podatkov tako, da dodamo dvojno podčrtaj (___) kot predpono atributu, ki ga želimo skriti. Po tem atribut ne bo viden zunaj razreda skozi objekt.

Razmislite o naslednjem primeru.

Primer

 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() 

Izhod:

polje s seznamom java
 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'