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