Ereditarietà delle classi

Introduzione alla programmazione orientata agli oggetti in Python

George Boorman

Curriculum Manager, DataCamp

Riutilizzo del codice

1. Qualcuno l'ha già fatto

  • I pacchetti sono ottimi per funzionalità fisse
  • La POO è ottima per personalizzare la funzionalità

loghi di diversi pacchetti Python

Introduzione alla programmazione orientata agli oggetti in Python

Riutilizzo del codice

1. Qualcuno l'ha già fatto

2. DRY: Non ripeterti

various gui elements

Introduzione alla programmazione orientata agli oggetti in Python

Riutilizzo del codice

1. Qualcuno l'ha già fatto

2. DRY: Non ripeterti

non usare vari elementi dell'interfaccia grafica

Introduzione alla programmazione orientata agli oggetti in Python

Ereditarietà

$$\Large{\text{Nuova funzionalità della classe = Vecchia funzionalità della classe + extra}}$$

Introduzione alla programmazione orientata agli oggetti in Python

Gerarchia di esempio

Classe BankAccount

Introduzione alla programmazione orientata agli oggetti in Python

Gerarchia di esempio

SavingsAccount che eredita da BankAccount

Introduzione alla programmazione orientata agli oggetti in Python

Gerarchia di esempio

CheckingAccount che eredita anche da BankAccount

Introduzione alla programmazione orientata agli oggetti in Python

Gerarchia di esempio

CheckingAccount ha un metodo withdraw modificato

Introduzione alla programmazione orientata agli oggetti in Python

Implementazione dell’ereditarietà delle classi

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: Classe padre la cui funzionalità viene estesa/ereditata
  • SavingsAccount: Sottoclasse/figlia che erediterà la funzionalità e aggiungerà altro
Introduzione alla programmazione orientata agli oggetti in Python

La classe figlia ha tutti i dati della classe padre

# 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)
Introduzione alla programmazione orientata agli oggetti in Python

Relazione di ereditarietà "is-a"

A SavingsAccount is a BankAccount

(possibilmente con caratteristiche speciali)

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
Introduzione alla programmazione orientata agli oggetti in Python

Passiamo alla pratica!

Introduzione alla programmazione orientata agli oggetti in Python

Preparing Video For Download...