logo

Python öröklődés

Az öröklődés az objektum-orientált paradigma fontos aspektusa. Az öröklődés biztosítja a kód újrafelhasználását a program számára, mert egy meglévő osztályt használhatunk új osztály létrehozására ahelyett, hogy a semmiből hoznánk létre.

Az öröklődés során a gyermekosztály megszerzi a tulajdonságokat, és hozzáférhet a szülőosztályban meghatározott összes adattaghoz és funkcióhoz. Az utódosztályok sajátos megvalósítást is biztosíthatnak a szülőosztály funkcióihoz. Az oktatóanyag ezen részében részletesen tárgyaljuk az öröklődést.

sql sorrendben dátum szerint

A pythonban egy származtatott osztály örökölheti az alaposztályt, ha csak megemlíti a bázist a származtatott osztálynév utáni zárójelben. Tekintsük a következő szintaxist egy alaposztály örökléséhez a származtatott osztályba.

Python öröklődés

Szintaxis

 class derived-class(base class): 

Egy osztály több osztályt is örökölhet, ha mindegyiket megemlíti a zárójelben. Vegye figyelembe a következő szintaxist.

Szintaxis

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

1. példa

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

Kimenet:

 dog barking Animal Speaking 

Python többszintű öröklődés

A többszintű öröklődés lehetséges a pythonban, mint más objektum-orientált nyelvekben. A többszintű öröklődés archiválva van, ha egy származtatott osztály egy másik származtatott osztályt örököl. Nincs korlátozva a szintek száma, ameddig a többszintű öröklődés archiválva van a pythonban.

Python öröklődés

A többszintű öröklődés szintaxisa alább látható.

Szintaxis

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

Példa

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

Kimenet:

 dog barking Animal Speaking Eating bread... 

Python Többszörös öröklődés

A Python rugalmasságot biztosít számunkra, hogy több alaposztályt is örököljünk a gyermekosztályban.

Python öröklődés

A többszörös öröklődés végrehajtásának szintaxisa az alábbiakban található.

Szintaxis

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

Példa

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

Kimenet:

 30 200 0.5 

Az issubclass(sub,sup) metódus

Az issubclass(sub, sup) metódus a megadott osztályok közötti kapcsolatok ellenőrzésére szolgál. Igazat ad vissza, ha az első osztály a második osztály alosztálya, egyébként hamis értéket ad vissza.

Tekintsük a következő példát.

Példa

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

Kimenet:

 True False 

Az isinstance (obj, osztály) metódus

Az isinstance() metódus az objektumok és osztályok közötti kapcsolat ellenőrzésére szolgál. Igaz értéket ad vissza, ha az első paraméter, azaz az obj a második paraméter, azaz az osztály példánya.

Tekintsük a következő példát.

Példa

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

Kimenet:

 True 

Módszer felülbírálása

A szülő osztály metódusának valamilyen konkrét megvalósítását biztosíthatjuk gyermekosztályunkban. Ha a szülő osztály metódusa a gyermekosztályban van definiálva valamilyen konkrét megvalósítással, akkor ezt a koncepciót metódus felülbírálásnak nevezzük. Előfordulhat, hogy metódusfelülírást kell végrehajtanunk abban a forgatókönyvben, amikor a szülőosztály metódusának eltérő definíciójára van szükség a gyermekosztályban.

Tekintsük a következő példát a metódus felülbírálásához a pythonban.

Példa

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

Kimenet:

tömblista rendezve
 Barking 

Valós élet Példa a módszer felülbírálására

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

Kimenet:

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

Adatabsztrakció pythonban

Az absztrakció fontos szempont az objektumorientált programozásban. A pythonban az adatok elrejtését is végrehajthatjuk úgy, hogy az elrejteni kívánt attribútumhoz a dupla aláhúzásjelet (___) adjuk előtagként. Ezt követően az attribútum nem lesz látható az osztályon kívül az objektumon keresztül.

Tekintsük a következő példát.

Példa

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

Kimenet:

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