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