Moștenirea claselor

Programare orientată pe obiecte în Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Reutilizarea codului

Programare orientată pe obiecte în Python

Reutilizarea codului

 

1. Cineva a făcut-o deja

 

  • Modulele sunt excelente pentru funcționalitate fixă
  • OOP este excelent pentru personalizarea funcționalității

logo-urile mai multor pachete Python

Programare orientată pe obiecte în Python

Reutilizarea codului

 

1. Cineva a făcut-o deja

 

2. DRY: Don't Repeat Yourself

diverse elemente GUI

Programare orientată pe obiecte în Python

Reutilizarea codului

 

1. Cineva a făcut-o deja

 

2. DRY: Don't Repeat Yourself

nu folosiți diverse elemente GUI

Programare orientată pe obiecte în Python

Moștenire

 

$$\Large{\text{Funcționalitate clasă nouă = Funcționalitate clasă veche + extra}}$$

Programare orientată pe obiecte în Python

clasa account

Programare orientată pe obiecte în Python

savings account moștenită din account

Programare orientată pe obiecte în Python

două clase moștenite din account

Programare orientată pe obiecte în Python

metodă modificată în checking account

Programare orientată pe obiecte în Python

Implementarea moștenirii claselor

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: clasa a cărei funcționalitate este extinsă/moștenită
  • MyChild: clasa care moștenește funcționalitatea și adaugă mai mult
Programare orientată pe obiecte în Python

Clasa copil conține toate datele clasei părinte

# 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)
Programare orientată pe obiecte în Python

Moștenire: relația „este un"

Un SavingsAccount este un BankAccount

(posibil cu funcționalități speciale)

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
Programare orientată pe obiecte în Python

Să exersăm!

Programare orientată pe obiecte în Python

Preparing Video For Download...