logo

Python nasljeđivanje

Nasljeđivanje je važan aspekt objektno orijentirane paradigme. Nasljeđivanje programu omogućuje ponovnu upotrebu koda jer možemo koristiti postojeću klasu za stvaranje nove klase umjesto da je stvaramo od nule.

U nasljeđivanju, klasa dijete stječe svojstva i može pristupiti svim članovima podataka i funkcijama definiranim u klasi roditelju. Klasa dijete također može pružiti svoju specifičnu implementaciju funkcijama klase roditelja. U ovom odjeljku tutoriala, detaljno ćemo raspravljati o nasljeđivanju.

deinstaliraj kutni cli

U pythonu, izvedena klasa može naslijediti osnovnu klasu samo spominjanjem baze u zagradi iza imena izvedene klase. Razmotrite sljedeću sintaksu za naslijeđivanje osnovne klase u izvedenu klasu.

Python nasljeđivanje

Sintaksa

 class derived-class(base class): 

Klasa može naslijediti više klasa tako da ih sve navede u zagradi. Razmotrite sljedeću sintaksu.

Sintaksa

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

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

Izlaz:

 dog barking Animal Speaking 

Python višerazinsko nasljeđivanje

Nasljeđivanje na više razina moguće je u pythonu kao i drugim objektno orijentiranim jezicima. Nasljeđivanje na više razina se arhivira kada izvedena klasa naslijedi drugu izvedenu klasu. Ne postoji ograničenje broja razina do kojih se nasljeđivanje više razina arhivira u pythonu.

Python nasljeđivanje

Sintaksa nasljeđivanja na više razina je dana u nastavku.

Sintaksa

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

Primjer

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

Izlaz:

 dog barking Animal Speaking Eating bread... 

Python višestruko nasljeđivanje

Python nam pruža fleksibilnost da naslijedimo više osnovnih klasa u podređenoj klasi.

Python nasljeđivanje

Sintaksa za izvođenje višestrukog nasljeđivanja dana je u nastavku.

Sintaksa

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

Primjer

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

Izlaz:

 30 200 0.5 

Metoda issubclass(sub,sup).

Metoda issubclass(sub, sup) koristi se za provjeru odnosa između navedenih klasa. Vraća true ako je prva klasa podklasa druge klase, a false u suprotnom.

Razmotrite sljedeći primjer.

Primjer

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

Izlaz:

 True False 

Metoda isinstance (obj, klasa).

Metoda isinstance() koristi se za provjeru odnosa između objekata i klasa. Vraća true ako je prvi parametar, tj. obj, instanca drugog parametra, tj. klase.

Razmotrite sljedeći primjer.

Primjer

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

Izlaz:

 True 

Nadjačavanje metode

Možemo osigurati neku specifičnu implementaciju metode roditeljske klase u našoj podređenoj klasi. Kada je metoda nadređene klase definirana u podređenoj klasi s nekom specifičnom implementacijom, tada se koncept naziva nadjačavanje metode. Možda ćemo morati izvršiti nadjačavanje metode u scenariju gdje je potrebna drugačija definicija metode nadređene klase u podređenoj klasi.

Razmotrite sljedeći primjer za nadjačavanje metode u pythonu.

Primjer

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

Izlaz:

 Barking 

Primjer nadjačavanja metode iz stvarnog života

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

Izlaz:

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

Apstrakcija podataka u pythonu

Apstrakcija je važan aspekt objektno orijentiranog programiranja. U pythonu također možemo izvršiti skrivanje podataka dodavanjem dvostruke podvlake (___) kao prefiksa atributu koji treba sakriti. Nakon ovoga, atribut neće biti vidljiv izvan klase kroz objekt.

Razmotrite sljedeći primjer.

u Javi

Primjer

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

Izlaz:

 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'