Спадкування є важливим аспектом об'єктно-орієнтованої парадигми. Спадкування забезпечує повторне використання коду в програмі, оскільки ми можемо використовувати існуючий клас для створення нового класу замість того, щоб створювати його з нуля.
У спадкуванні дочірній клас отримує властивості та може отримати доступ до всіх членів даних і функцій, визначених у батьківському класі. Дочірній клас також може забезпечити свою специфічну реалізацію функцій батьківського класу. У цьому розділі підручника ми детально обговоримо успадкування.
wumpus світ
У 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.
Синтаксис багаторівневого успадкування наведено нижче.
Синтаксис
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 надає нам гнучкість для успадкування кількох базових класів у дочірньому класі.
Синтаксис множинного успадкування наведено нижче.
Синтаксис
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'