Klassenvererbung

Einführung in objektorientierte Programmierung in Python

George Boorman

Curriculum Manager, DataCamp

Code-Wiederverwendung

 

1. Jemand hat's schon gebaut

 

  • Packages sind super für feste Funktionalität
  • OOP ist super zum Anpassen von Funktionalität

Logos mehrerer Python-Packages

Einführung in objektorientierte Programmierung in Python

Code-Wiederverwendung

 

1. Jemand hat's schon gebaut

 

2. DRY: Don't Repeat Yourself

verschiedene GUI-Elemente

Einführung in objektorientierte Programmierung in Python

Code-Wiederverwendung

 

1. Jemand hat's schon gebaut

 

2. DRY: Don't Repeat Yourself

verwende nicht verschiedene GUI-Elemente

Einführung in objektorientierte Programmierung in Python

Vererbung

 

$$\Large{\text{Neue Klassenfunktion = Alte Klassenfunktion + Extra}}$$

Einführung in objektorientierte Programmierung in Python

Beispielhierarchie

Klasse BankAccount

Einführung in objektorientierte Programmierung in Python

Beispielhierarchie

SavingsAccount erbt von BankAccount

Einführung in objektorientierte Programmierung in Python

Beispielhierarchie

CheckingAccount erbt ebenfalls von BankAccount

Einführung in objektorientierte Programmierung in Python

Beispielhierarchie

CheckingAccount hat eine angepasste withdraw-Methode

Einführung in objektorientierte Programmierung in Python

Klassenvererbung implementieren

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

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


# Class inheriting from BankAccount class SavingsAccount(BankAccount): pass
  • BankAccount: Elternklasse, deren Funktionalität erweitert/vererbt wird
  • SavingsAccount: Kind-/Subklasse, die erbt und mehr hinzufügt
Einführung in 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)
Einführung in objektorientierte Programmierung in Python

Vererbung: „ist-ein“-Beziehung

Ein SavingsAccount ist ein BankAccount

(evtl. mit Extras)

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
Einführung in objektorientierte Programmierung in Python

Lass uns üben!

Einführung in objektorientierte Programmierung in Python

Preparing Video For Download...