Klasse-erfenis

Objectgeoriënteerd programmeren in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Code hergebruik

Objectgeoriënteerd programmeren in Python

Code hergebruik

 

1. Iemand heeft het al gedaan

 

  • Modules zijn geweldig voor vaste functionaliteit
  • OOP is geweldig voor het aanpassen van functionaliteit

logo's van verschillende python pakketten

Objectgeoriënteerd programmeren in Python

Code hergebruik

 

1. Iemand heeft het al gedaan

 

2. DRY: Herhaal jezelf niet

verschillende gui-elementen

Objectgeoriënteerd programmeren in Python

Code hergebruik

 

1. Iemand heeft het al gedaan

 

2. DRY: Herhaal jezelf niet

gebruik geen verschillende gui-elementen

Objectgeoriënteerd programmeren in Python

Erfenis

 

$$\Large{\text{Nieuwe klasse functionaliteit = Oude klasse functionaliteit + extra}}$$

Objectgeoriënteerd programmeren in Python

account klasse

Objectgeoriënteerd programmeren in Python

spaarrekening geërfd van account

Objectgeoriënteerd programmeren in Python

twee klassen geërfd van account

Objectgeoriënteerd programmeren in Python

gewijzigde methode in betaalrekening

Objectgeoriënteerd programmeren in Python

Implementatie van klasse-erfenis

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

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

# Lege klasse geërfd van BankAccount
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Doe hier dingen
  • MyParent: klasse waarvan de functionaliteit wordt uitgebreid/geërfd
  • MyChild: klasse die de functionaliteit erft en meer toevoegt
Objectgeoriënteerd programmeren in Python

Kindklasse heeft alle ouderdata

# Constructor geërfd van BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attribuut geërfd van BankAccount
savings_acct.balance
1000
# Methode geërfd van BankAccount
savings_acct.withdraw(300)
Objectgeoriënteerd programmeren in Python

Erfenis: "is-een" relatie

Een SavingsAccount is een BankAccount

(mogelijk met speciale functies)

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
Objectgeoriënteerd programmeren in Python

Laten we oefenen!

Objectgeoriënteerd programmeren in Python

Preparing Video For Download...