Успадкування класів

Вступ до обʼєктно-орієнтованого програмування в Python

George Boorman

Curriculum Manager, DataCamp

Повторне використання коду

 

1. Хтось уже це зробив

 

  • Пакети зручні для фіксованого функціоналу
  • ООП зручне для налаштування функціоналу

логотипи кількох пакетів Python

Вступ до обʼєктно-орієнтованого програмування в Python

Повторне використання коду

 

1. Хтось уже це зробив

 

2. DRY: Don't Repeat Yourself

різні елементи GUI

Вступ до обʼєктно-орієнтованого програмування в Python

Повторне використання коду

 

1. Хтось уже це зробив

 

2. DRY: Don't Repeat Yourself

не використовуйте різні елементи GUI

Вступ до обʼєктно-орієнтованого програмування в Python

Успадкування

 

$$\Large{\text{Функціонал нового класу = функціонал старого класу + додаткове}}$$

Вступ до обʼєктно-орієнтованого програмування в Python

Приклад ієрархії

Клас BankAccount

Вступ до обʼєктно-орієнтованого програмування в Python

Приклад ієрархії

SavingsAccount успадковує від BankAccount

Вступ до обʼєктно-орієнтованого програмування в Python

Приклад ієрархії

CheckingAccount також успадковує від BankAccount

Вступ до обʼєктно-орієнтованого програмування в Python

Приклад ієрархії

У CheckingAccount змінено метод withdraw

Вступ до обʼєктно-орієнтованого програмування в Python

Реалізація успадкування класів

class BankAccount:
    def __init__(self, balance):
       self.balance = balance

    def withdraw(self, amount):
        self.balance -= amount


# Class inheriting from BankAccount class SavingsAccount(BankAccount): pass
  • BankAccount: Батьківський клас, чий функціонал розширюють/успадковують
  • SavingsAccount: Дочірній/підклас, що успадкує функціонал і додасть більше
Вступ до обʼєктно-орієнтованого програмування в Python

Дочірній клас має всі дані батьківського

# Конструктор успадкований від BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Атрибут успадкований від BankAccount
savings_acct.balance
1000
# Метод успадкований від BankAccount
savings_acct.withdraw(300)
Вступ до обʼєктно-орієнтованого програмування в Python

Успадкування: зв'язок «є»

SavingsAccount — це BankAccount

(можливо, з додатковими можливостями)

savings_acct = SavingsAccount(1000)
isinstance(savings_acct, SavingsAccount)
True
isinstance(savings_acct, BankAccount)
True

 

 

acct = BankAccount(500)
isinstance(acct, SavingsAccount)
False
isinstance(acct, BankAccount)
True
Вступ до обʼєктно-орієнтованого програмування в Python

Давайте потренуємось!

Вступ до обʼєктно-орієнтованого програмування в Python

Preparing Video For Download...