logo

Python paveldėjimas

Paveldėjimas yra svarbus objektinės paradigmos aspektas. Paveldėjimas suteikia programai galimybę pakartotinai naudoti kodą, nes galime naudoti esamą klasę, kad sukurtume naują klasę, o ne kurtume ją nuo nulio.

Paveldėjimo metu antrinė klasė įgyja savybes ir gali pasiekti visus pirminėje klasėje apibrėžtus duomenų narius ir funkcijas. Vaikų klasė taip pat gali suteikti savo specifinį įgyvendinimą pagrindinės klasės funkcijoms. Šioje pamokos dalyje išsamiai aptarsime paveldėjimą.

kaip konvertuoti char į java eilutę

Python sistemoje išvestinė klasė gali paveldėti bazinę klasę, tiesiog paminėjus bazę skliausteliuose po išvestinės klasės pavadinimo. Apsvarstykite šią sintaksę, kad paveldėtumėte bazinę klasę į išvestinę klasę.

Python paveldėjimas

Sintaksė

 class derived-class(base class): 

Klasė gali paveldėti kelias klases, paminėjusi jas visas skliausteliuose. Apsvarstykite šią sintaksę.

Sintaksė

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

1 pavyzdys

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

Išvestis:

 dog barking Animal Speaking 

Python kelių lygių paveldėjimas

Kelių lygių paveldėjimas galimas python, kaip ir kitose objektinėse kalbose. Kelių lygių paveldėjimas archyvuojamas, kai išvestinė klasė paveldi kitą išvestinę klasę. Lygių, iki kurių daugiapakopis paveldėjimas yra archyvuojamas python, skaičius neribojamas.

Python paveldėjimas

Žemiau pateikta kelių lygių paveldėjimo sintaksė.

Sintaksė

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

Pavyzdys

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

Išvestis:

 dog barking Animal Speaking Eating bread... 

Python daugialypis paveldėjimas

Python suteikia mums lankstumo paveldėti kelias bazines klases antrinėje klasėje.

Python paveldėjimas

Toliau pateikiama kelių paveldėjimo sintaksė.

Sintaksė

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

Pavyzdys

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

Išvestis:

 30 200 0.5 

Poklasio(sub,sup) metodas

Ryšiams tarp nurodytų klasių patikrinti naudojamas issubclass(sub, sup) metodas. Grąžina tiesa, jei pirmoji klasė yra antrosios klasės poklasis, o kitu atveju – false.

Apsvarstykite toliau pateiktą pavyzdį.

Pavyzdys

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

Išvestis:

 True False 

Isinstance (obj, class) metodas

Metodas isinstance() naudojamas patikrinti ryšį tarp objektų ir klasių. Jis grąžina teisingą, jei pirmasis parametras, ty obj, yra antrojo parametro egzempliorius, ty klasė.

Apsvarstykite toliau pateiktą pavyzdį.

Pavyzdys

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

Išvestis:

 True 

Metodo nepaisymas

Savo vaikų klasėje galime pateikti tam tikrą konkretų pirminės klasės metodo įgyvendinimą. Kai pagrindinės klasės metodas yra apibrėžtas antrinėje klasėje su tam tikru konkrečiu įgyvendinimu, tada koncepcija vadinama metodo nepaisymu. Scenarijuje, kai antrinėje klasėje reikalingas kitoks pagrindinės klasės metodo apibrėžimas, mums gali tekti atlikti metodo nepaisymą.

Apsvarstykite šį pavyzdį, kad atliktumėte metodo nepaisymą python.

Pavyzdys

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

Išvestis:

 Barking 

Tikras gyvenimas Metodo nepaisymo pavyzdys

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

Išvestis:

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

Duomenų abstrakcija python

Abstrakcija yra svarbus objektinio programavimo aspektas. Python sistemoje taip pat galime paslėpti duomenis, pridėdami dvigubą pabraukimą (___) kaip priešdėlį prie atributo, kurį reikia paslėpti. Po to atributas nebus matomas už klasės ribų per objektą.

tigras, palyginti su liūtu

Apsvarstykite toliau pateiktą pavyzdį.

Pavyzdys

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

Išvestis:

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