logo

Спадкування Python

Спадкування є важливим аспектом об'єктно-орієнтованої парадигми. Спадкування забезпечує повторне використання коду в програмі, оскільки ми можемо використовувати існуючий клас для створення нового класу замість того, щоб створювати його з нуля.

У спадкуванні дочірній клас отримує властивості та може отримати доступ до всіх членів даних і функцій, визначених у батьківському класі. Дочірній клас також може забезпечити свою специфічну реалізацію функцій батьківського класу. У цьому розділі підручника ми детально обговоримо успадкування.

wumpus світ

У python похідний клас може успадкувати базовий клас, просто згадавши базу в дужках після імені похідного класу. Розгляньте наступний синтаксис, щоб успадкувати базовий клас у похідний клас.

Спадкування Python

Синтаксис

 class derived-class(base class): 

Клас може успадкувати кілька класів, якщо згадати їх усі в дужках. Розглянемо наступний синтаксис.

Синтаксис

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

Приклад 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() 

Вихід:

 dog barking Animal Speaking 

Багаторівневе успадкування Python

У Python, як і в інших об’єктно-орієнтованих мовах, можливе багаторівневе успадкування. Багаторівневе успадкування архівується, коли похідний клас успадковує інший похідний клас. Немає обмежень щодо кількості рівнів, до яких багаторівневе успадкування архівується в Python.

Спадкування Python

Синтаксис багаторівневого успадкування наведено нижче.

Синтаксис

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

приклад

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

Вихід:

 dog barking Animal Speaking Eating bread... 

Множинне успадкування Python

Python надає нам гнучкість для успадкування кількох базових класів у дочірньому класі.

Спадкування Python

Синтаксис множинного успадкування наведено нижче.

Синтаксис

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

приклад

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

Вихід:

 30 200 0.5 

Метод issubclass(sub,sup).

Метод issubclass(sub, sup) використовується для перевірки зв’язків між вказаними класами. Він повертає true, якщо перший клас є підкласом другого класу, і false в іншому випадку.

Розглянемо наступний приклад.

приклад

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

Вихід:

 True False 

Метод isinstance (obj, клас).

Метод isinstance() використовується для перевірки зв’язку між об’єктами та класами. Він повертає істину, якщо перший параметр, тобто obj, є екземпляром другого параметра, тобто класу.

Розглянемо наступний приклад.

приклад

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

Вихід:

 True 

Перевизначення методу

Ми можемо забезпечити певну реалізацію методу батьківського класу в нашому дочірньому класі. Коли метод батьківського класу визначено в дочірньому класі з певною реалізацією, тоді ця концепція називається перевизначенням методу. Нам може знадобитися виконати перевизначення методу в сценарії, де в дочірньому класі потрібне інше визначення методу батьківського класу.

завантажити відео з youtube за допомогою vlc

Розглянемо наступний приклад, щоб виконати перевизначення методу в python.

приклад

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

Вихід:

 Barking 

Реальний приклад перевизначення методу

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

Вихід:

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

Абстракція даних у python

Абстракція є важливим аспектом об'єктно-орієнтованого програмування. У Python ми також можемо виконати приховування даних, додавши подвійне підкреслення (___) як префікс до атрибута, який потрібно приховати. Після цього атрибут не буде видно за межами класу через об'єкт.

Розглянемо наступний приклад.

приклад

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

Вихід:

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