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