Klassenvererbung

Objektorientierte Programmierung in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Code-Wiederverwendung

Objektorientierte Programmierung in Python

Code-Wiederverwendung

 

1. Jemand hat es schon gemacht

 

  • Module sind super für feste Funktionalität
  • OOP ist super für anpassbare Funktionalität

Logos mehrerer Python-Pakete

Objektorientierte Programmierung in Python

Code-Wiederverwendung

 

1. Jemand hat es schon gemacht

 

2. DRY: Don't Repeat Yourself

verschiedene GUI-Elemente

Objektorientierte Programmierung in Python

Code-Wiederverwendung

 

1. Jemand hat es schon gemacht

 

2. DRY: Don't Repeat Yourself

verschiedene GUI-Elemente nicht verwenden

Objektorientierte Programmierung in Python

Vererbung

 

$$\Large{\text{Neue Klassenfunktionalität = Alte Klassenfunktionalität + extra}}$$

Objektorientierte Programmierung in Python

Konto-Klasse

Objektorientierte Programmierung in Python

Sparkonto von Konto geerbt

Objektorientierte Programmierung in Python

zwei Klassen von Konto geerbt

Objektorientierte Programmierung in Python

geänderte Methode im Girokonto

Objektorientierte Programmierung in Python

Implementierung der Klassenvererbung

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

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

# Leere Klasse von BankAccount geerbt
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Hier etwas tun
  • MyParent: Klasse, deren Funktionalität erweitert/vererbt wird
  • MyChild: Klasse, die die Funktionalität erbt und erweitert
Objektorientierte Programmierung in Python

Kindklasse hat alle Elterndaten

# Konstruktor von BankAccount geerbt
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attribut von BankAccount geerbt
savings_acct.balance
1000
# Methode von BankAccount geerbt
savings_acct.withdraw(300)
Objektorientierte Programmierung in Python

Vererbung: "ist-ein" Beziehung

Ein SavingsAccount ist ein BankAccount

(möglicherweise mit speziellen Funktionen)

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
Objektorientierte Programmierung in Python

Lass uns üben!

Objektorientierte Programmierung in Python

Preparing Video For Download...