Klassarv

Introduktion till objektorienterad programmering i Python

George Boorman

Curriculum Manager, DataCamp

Kodåteranvändning

 

1. Någon har redan gjort det

 

  • Paket är bra för fast funktionalitet
  • OOP är bra för att anpassa funktionalitet

logotyper för flera Python-paket

Introduktion till objektorienterad programmering i Python

Kodåteranvändning

 

1. Någon har redan gjort det

 

2. DRY: Don't Repeat Yourself

olika gränssnittselement

Introduktion till objektorienterad programmering i Python

Kodåteranvändning

 

1. Någon har redan gjort det

 

2. DRY: Don't Repeat Yourself

undvik att använda enskilda gränssnittselement

Introduktion till objektorienterad programmering i Python

Arv

 

$$\Large{\text{Ny klassfunktionalitet = Gammal klassfunktionalitet + extra}}$$

Introduktion till objektorienterad programmering i Python

Exempelhierarki

klassen BankAccount

Introduktion till objektorienterad programmering i Python

Exempelhierarki

SavingsAccount ärver från BankAccount

Introduktion till objektorienterad programmering i Python

Exempelhierarki

CheckingAccount ärver också från BankAccount

Introduktion till objektorienterad programmering i Python

Exempelhierarki

CheckingAccount har en modifierad withdraw-metod

Introduktion till objektorienterad programmering i Python

Implementera klassarv

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: Föräldraklass vars funktionalitet utökas/ärvs
  • SavingsAccount: Barnklass/underklass som ärver funktionaliteten och lägger till mer
Introduktion till objektorienterad programmering i Python

Barnklassen har all data från föräldern

# 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)
Introduktion till objektorienterad programmering i Python

Arv: "är-ett"-relationen

Ett SavingsAccount är ett BankAccount

(möjligen med extra funktioner)

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
Introduktion till objektorienterad programmering i Python

Nu kör vi en övning!

Introduktion till objektorienterad programmering i Python

Preparing Video For Download...