Dziedziczenie klas

Programowanie obiektowe w Pythonie

Alex Yarosh

Content Quality Analyst @ DataCamp

Ponowne użycie kodu

Programowanie obiektowe w Pythonie

Ponowne użycie kodu

 

1. Ktoś już to zrobił

 

  • Moduły sprawdzają się przy stałej funkcjonalności
  • OOP świetnie nadaje się do dostosowywania funkcjonalności

logo kilku pakietów Pythona

Programowanie obiektowe w Pythonie

Ponowne użycie kodu

 

1. Ktoś już to zrobił

 

2. DRY: Nie powtarzaj się

różne elementy GUI

Programowanie obiektowe w Pythonie

Ponowne użycie kodu

 

1. Ktoś już to zrobił

 

2. DRY: Nie powtarzaj się

nie używaj różnych elementów GUI

Programowanie obiektowe w Pythonie

Dziedziczenie

 

$$\Large{\text{Nowa klasa = Stara klasa + rozszerzenie}}$$

Programowanie obiektowe w Pythonie

klasa account

Programowanie obiektowe w Pythonie

savings account dziedziczące po account

Programowanie obiektowe w Pythonie

dwie klasy dziedziczące po account

Programowanie obiektowe w Pythonie

zmodyfikowana metoda w checking account

Programowanie obiektowe w Pythonie

Implementacja dziedziczenia klas

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: klasa, której funkcjonalność jest rozszerzana/dziedziczona
  • MyChild: klasa, która dziedziczy funkcjonalność i dodaje własną
Programowanie obiektowe w Pythonie

Klasa potomna dziedziczy wszystkie dane klasy nadrzędnej

# Constructor inherited from BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attribute inherited from BankAccount
savings_acct.balance
1000
# Method inherited from BankAccount
savings_acct.withdraw(300)
Programowanie obiektowe w Pythonie

Dziedziczenie: relacja „jest"

SavingsAccount jest BankAccount

(ewentualnie z dodatkowymi funkcjami)

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
Programowanie obiektowe w Pythonie

Czas na ćwiczenia!

Programowanie obiektowe w Pythonie

Preparing Video For Download...