Mantojums ir svarīgs objektorientētās paradigmas aspekts. Mantojums nodrošina programmas koda atkārtotu izmantošanu, jo mēs varam izmantot esošu klasi, lai izveidotu jaunu klasi, nevis izveidotu to no jauna.
Mantojumā atvasinātā klase iegūst rekvizītus un var piekļūt visiem datu dalībniekiem un funkcijām, kas definētas vecākklasē. Bērnu klase var arī nodrošināt savu īpašo ieviešanu vecāku klases funkcijām. Šajā apmācības sadaļā mēs detalizēti apspriedīsim mantojumu.
pārvērst strinu par int
Python programmā atvasināta klase var mantot bāzes klasi, vienkārši minot bāzi iekavās aiz atvasinātās klases nosaukuma. Apsveriet šādu sintaksi, lai mantotu bāzes klasi atvasinātajā klasē.
Sintakse
class derived-class(base class):
Klase var mantot vairākas klases, minot tās visas iekavās. Apsveriet šādu sintaksi.
Sintakse
class derive-class(, , ..... ):
1. piemērs
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()
Izvade:
dog barking Animal Speaking
Python daudzlīmeņu mantošana
Daudzlīmeņu mantošana ir iespējama python, tāpat kā citās objektorientētās valodās. Daudzlīmeņu mantošana tiek arhivēta, kad atvasināta klase manto citu atvasinātu klasi. Nav ierobežojumu to līmeņu skaitam, līdz kuriem daudzlīmeņu mantojums tiek arhivēts python.
Daudzlīmeņu mantojuma sintakse ir dota zemāk.
Sintakse
class class1: class class2(class1): class class3(class2): . .
Piemērs
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()
Izvade:
dog barking Animal Speaking Eating bread...
Python Daudzkārtēja mantošana
Python nodrošina mums elastību, lai mantotu vairākas bāzes klases bērnu klasē.
Sintakse vairāku mantojuma veikšanai ir norādīta tālāk.
Sintakse
class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN):
Piemērs
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))
Izvade:
30 200 0.5
Issubclass(sub,sup) metode
Metode issubclass(sub, sup) tiek izmantota, lai pārbaudītu attiecības starp norādītajām klasēm. Tas atgriež patiesu, ja pirmā klase ir otrās klases apakšklase, un false, ja tā nav.
Apsveriet šādu piemēru.
Piemērs
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))
Izvade:
True False
Isinstance (obj, class) metode
Metode isinstance() tiek izmantota, lai pārbaudītu attiecības starp objektiem un klasēm. Tas atgriež patieso vērtību, ja pirmais parametrs, t.i., obj, ir otrā parametra gadījums, t.i., klase.
Apsveriet šādu piemēru.
Piemērs
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))
Izvade:
apgriežot virkni java
True
Metodes ignorēšana
Mēs varam nodrošināt konkrētu vecāku klases metodes ieviešanu mūsu bērnu klasē. Ja vecākklases metode ir definēta bērnklasē ar kādu konkrētu ieviešanu, tad šo jēdzienu sauc par metodes ignorēšanu. Mums var būt nepieciešams veikt metodes ignorēšanu scenārijā, kurā ir nepieciešama atšķirīga vecākklases metodes definīcija pakārtotajā klasē.
Apsveriet šo piemēru, lai veiktu metodes ignorēšanu programmā python.
Piemērs
class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak()
Izvade:
Barking
Reālā dzīve Metodes ignorēšanas piemērs
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());
Izvade:
Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8
Datu abstrakcija python
Abstrakcija ir svarīgs objektorientētas programmēšanas aspekts. Python mēs varam arī veikt datu slēpšanu, pievienojot dubulto pasvītrojumu (___) kā prefiksu atribūtam, kas ir jāslēpj. Pēc tam atribūts nebūs redzams ārpus klases caur objektu.
Apsveriet šādu piemēru.
Piemērs
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()
Izvade:
The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'