logo

Dědičnost Pythonu

Dědičnost je důležitým aspektem objektově orientovaného paradigmatu. Dědičnost poskytuje programu opětovnou použitelnost kódu, protože můžeme použít existující třídu k vytvoření nové třídy namísto jejího vytváření od začátku.

Při dědění získává podřízená třída vlastnosti a může přistupovat ke všem datovým členům a funkcím definovaným v nadřazené třídě. Podřízená třída může také poskytovat svou specifickou implementaci funkcím nadřazené třídy. V této části tutoriálu podrobně probereme dědičnost.

if-else java

V pythonu může odvozená třída zdědit základní třídu pouhým uvedením báze v závorce za názvem odvozené třídy. Zvažte následující syntaxi pro zdědění základní třídy do odvozené třídy.

Dědičnost Pythonu

Syntax

 class derived-class(base class): 

Třída může zdědit více tříd uvedením všech v závorce. Zvažte následující syntaxi.

Syntax

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

Příklad 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() 

Výstup:

 dog barking Animal Speaking 

Víceúrovňová dědičnost Pythonu

Víceúrovňová dědičnost je v pythonu možná jako v jiných objektově orientovaných jazycích. Víceúrovňová dědičnost je archivována, když odvozená třída zdědí jinou odvozenou třídu. Počet úrovní, do kterých je víceúrovňová dědičnost archivována v pythonu, není omezena.

Dědičnost Pythonu

Syntaxe víceúrovňové dědičnosti je uvedena níže.

Syntax

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

Příklad

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

Výstup:

 dog barking Animal Speaking Eating bread... 

Python Vícenásobná dědičnost

Python nám poskytuje flexibilitu při zdědění více základních tříd v podřízené třídě.

Dědičnost Pythonu

Syntaxe pro provádění vícenásobné dědičnosti je uvedena níže.

Syntax

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

Příklad

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

Výstup:

 30 200 0.5 

Metoda issubclass(sub,sup).

Ke kontrole vztahů mezi zadanými třídami se používá metoda issubclass(sub, sup). Vrací hodnotu true, pokud je první třída podtřídou druhé třídy, a v opačném případě vrací hodnotu false.

Zvažte následující příklad.

katrina kaif

Příklad

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

Výstup:

 True False 

Metoda isinstance (obj, class).

Metoda isinstance() se používá ke kontrole vztahu mezi objekty a třídami. Vrací hodnotu true, pokud první parametr, tj. obj, je instancí druhého parametru, tj. třídy.

Zvažte následující příklad.

Příklad

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

Výstup:

 True 

Přepsání metody

Můžeme poskytnout určitou konkrétní implementaci metody rodičovské třídy v naší podřízené třídě. Když je metoda rodičovské třídy definována v podřízené třídě s nějakou specifickou implementací, pak se tento koncept nazývá přepsání metody. Možná budeme muset provést přepsání metody ve scénáři, kde je v podřízené třídě potřeba jiná definice metody nadřazené třídy.

Zvažte následující příklad, abyste provedli přepsání metody v pythonu.

Příklad

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

Výstup:

 Barking 

Skutečný život Příklad přepsání metody

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

Výstup:

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

Abstrakce dat v pythonu

Abstrakce je důležitým aspektem objektově orientovaného programování. V pythonu můžeme také provést skrytí dat přidáním dvojitého podtržítka (___) jako předpony k atributu, který má být skrytý. Po tomto atribut nebude viditelný mimo třídu prostřednictvím objektu.

Zvažte následující příklad.

Příklad

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

Výstup:

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