logo

Dziedziczenie w Pythonie

Dziedziczenie jest ważnym aspektem paradygmatu obiektowego. Dziedziczenie zapewnia możliwość ponownego użycia kodu w programie, ponieważ możemy użyć istniejącej klasy do utworzenia nowej klasy, zamiast tworzyć ją od zera.

W procesie dziedziczenia klasa podrzędna nabywa właściwości i może uzyskać dostęp do wszystkich elementów danych i funkcji zdefiniowanych w klasie nadrzędnej. Klasa potomna może również zapewnić swoją specyficzną implementację funkcji klasy nadrzędnej. W tej części samouczka szczegółowo omówimy dziedziczenie.

świat wumpusa

W Pythonie klasa pochodna może dziedziczyć klasę bazową, po prostu wymieniając bazę w nawiasie po nazwie klasy pochodnej. Rozważ następującą składnię, aby dziedziczyć klasę bazową do klasy pochodnej.

Dziedziczenie w Pythonie

Składnia

 class derived-class(base class): 

Klasa może dziedziczyć wiele klas, wymieniając je wszystkie w nawiasie. Rozważ następującą składnię.

Składnia

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

Przykład 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() 

Wyjście:

 dog barking Animal Speaking 

Dziedziczenie wielopoziomowe w Pythonie

Dziedziczenie wielopoziomowe jest możliwe w Pythonie, podobnie jak w innych językach obiektowych. Dziedziczenie wielopoziomowe jest archiwizowane, gdy klasa pochodna dziedziczy inną klasę pochodną. Nie ma ograniczeń co do liczby poziomów, do których dziedziczenie wielopoziomowe jest archiwizowane w Pythonie.

Dziedziczenie w Pythonie

Poniżej podana jest składnia dziedziczenia wielopoziomowego.

Składnia

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

Przykład

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

Wyjście:

 dog barking Animal Speaking Eating bread... 

Python Dziedziczenie wielokrotne

Python zapewnia nam elastyczność dziedziczenia wielu klas bazowych w klasie podrzędnej.

Dziedziczenie w Pythonie

Poniżej podana jest składnia wykonywania wielokrotnego dziedziczenia.

Składnia

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

Przykład

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

Wyjście:

 30 200 0.5 

Metoda issubclass(sub,sup).

Do sprawdzenia powiązań pomiędzy określonymi klasami służy metoda issubclass(sub, sup). Zwraca wartość true, jeśli pierwsza klasa jest podklasą drugiej klasy, lub false w przeciwnym razie.

Rozważ następujący przykład.

Przykład

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

Wyjście:

 True False 

Metoda isinstance (obj, klasa).

Metoda isinstance() służy do sprawdzania relacji pomiędzy obiektami i klasami. Zwraca wartość true, jeśli pierwszy parametr, tj. obj, jest instancją drugiego parametru, tj. klasy.

Rozważ następujący przykład.

Przykład

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

Wyjście:

 True 

Zastępowanie metody

Możemy zapewnić konkretną implementację metody klasy nadrzędnej w naszej klasie podrzędnej. Kiedy metoda klasy nadrzędnej jest zdefiniowana w klasie podrzędnej z określoną implementacją, wówczas koncepcję tę nazywa się nadpisywaniem metod. Może być konieczne wykonanie przesłaniania metody w scenariuszu, w którym wymagana jest inna definicja metody klasy nadrzędnej w klasie podrzędnej.

Rozważ następujący przykład, aby wykonać przesłanianie metody w Pythonie.

Przykład

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

Wyjście:

 Barking 

Prawdziwy przykład przesłaniania 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()); 

Wyjście:

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

Abstrakcja danych w Pythonie

Abstrakcja jest ważnym aspektem programowania obiektowego. W Pythonie możemy również ukryć dane, dodając podwójne podkreślenie (___) jako przedrostek atrybutu, który ma zostać ukryty. Po tym atrybut nie będzie widoczny poza klasą poprzez obiekt.

Rozważ następujący przykład.

Przykład

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

Wyjście:

pobierz film z YouTube'a za pomocą VLC
 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'