Ereditarietà delle classi

Programmazione orientata agli oggetti in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Riutilizzo del codice

Programmazione orientata agli oggetti in Python

Riutilizzo del codice

 

1. Qualcuno l'ha già fatto

 

  • I moduli sono ottimi per funzionalità fisse
  • L'OOP è ottimo per personalizzare le funzionalità

loghi di diversi pacchetti python

Programmazione orientata agli oggetti in Python

Riutilizzo del codice

 

1. Qualcuno l'ha già fatto

 

2. DRY: Non Ripeterti

vari elementi GUI

Programmazione orientata agli oggetti in Python

Riutilizzo del codice

 

1. Qualcuno l'ha già fatto

 

2. DRY: Non Ripeterti

non usare vari elementi GUI

Programmazione orientata agli oggetti in Python

Ereditarietà

 

$$\Large{\text{Funzionalità nuova classe = Funzionalità vecchia classe + extra}}$$

Programmazione orientata agli oggetti in Python

classe account

Programmazione orientata agli oggetti in Python

conto risparmio ereditato da account

Programmazione orientata agli oggetti in Python

due classi ereditate da account

Programmazione orientata agli oggetti in Python

metodo modificato nel conto corrente

Programmazione orientata agli oggetti in Python

Implementare l'ereditarietà delle classi

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

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

# Classe vuota ereditata da BankAccount
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Fai cose qui
  • MyParent: classe di cui si estende/eredita la funzionalità
  • MyChild: classe che erediterà la funzionalità e aggiungerà altro
Programmazione orientata agli oggetti in Python

La classe figlia ha tutti i dati del genitore

# Costruttore ereditato da BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attributo ereditato da BankAccount
savings_acct.balance
1000
# Metodo ereditato da BankAccount
savings_acct.withdraw(300)
Programmazione orientata agli oggetti in Python

Ereditarietà: relazione "è-un"

Un SavingsAccount è un BankAccount

(forse con funzionalità 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
Programmazione orientata agli oggetti in Python

Facciamo pratica!

Programmazione orientata agli oggetti in Python

Preparing Video For Download...