Наслідування класів

Об'єктноорієнтоване програмування в Python

Alex Yarosh

Content Quality Analyst @ DataCamp

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

Об'єктноорієнтоване програмування в Python

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

 

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

 

  • Модулі підходять для сталої функціональності
  • ООП підходить для налаштовуваної функціональності

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

Об'єктноорієнтоване програмування в Python

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

 

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

 

2. DRY: Don't Repeat Yourself

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

Об'єктноорієнтоване програмування в Python

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

 

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

 

2. DRY: Don't Repeat Yourself

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

Об'єктноорієнтоване програмування в Python

Наслідування

 

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

Об'єктноорієнтоване програмування в Python

клас account

Об'єктноорієнтоване програмування в Python

ощадний рахунок, успадкований від account

Об'єктноорієнтоване програмування в Python

два класи, успадковані від account

Об'єктноорієнтоване програмування в Python

модифікований метод у checking account

Об'єктноорієнтоване програмування в Python

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

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

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

# Empty class inherited from BankAccount
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Do stuff here
  • MyParent: клас, чию функціональність розширюють/успадковують
  • MyChild: клас, що успадковує функціональність і додає своє
Об'єктноорієнтоване програмування в Python

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

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

Наслідування: зв'язок «є» (is-a)

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