Capitolo 18 – Ereditarietà Python
In questo capitolo studiamo l’ereditarietà Python, uno dei concetti più importanti della programmazione a oggetti per riutilizzare e specializzare il codice.
Materiale originale a cura di Alfredo Di Fiore – megistone.it
Manuale completo:
vai all’indice del corso
L’ereditarietà permette di creare nuove classi a partire da classi esistenti, evitando duplicazioni e migliorando il riuso del software.
18.1 Obiettivi formativi
- comprendere classe base e derivata;
- riutilizzare attributi e metodi;
- ridefinire metodi con override;
- usare
super(); - capire il vantaggio del riuso OOP.
18.2 Classe base e classe derivata
Una classe derivata eredita proprietà e comportamenti da una classe base.
class Animale:
def parla(self):
print("Suono generico")
class Cane(Animale):
pass
La classe Cane eredita il metodo parla().
18.3 Uso dell’ereditarietà Python
c = Cane()
c.parla()
Output:
Suono generico
18.4 Override dei metodi
Una classe derivata può ridefinire un metodo della classe base.
class Cane(Animale):
def parla(self):
print("Bau")
L’ereditarietà è molto usata in videogiochi, GUI, robotica e simulazioni per modellare gerarchie di oggetti.
18.5 Uso di super()
La funzione super() consente di richiamare metodi della classe padre.
class Animale:
def __init__(self, nome):
self.nome = nome
class Cane(Animale):
def __init__(self, nome, razza):
super().__init__(nome)
self.razza = razza
Questo evita duplicazioni nel costruttore.
18.6 Vantaggi dell’ereditarietà
- riuso del codice;
- migliore organizzazione;
- gerarchie logiche;
- maggiore manutenibilità;
- riduzione degli errori.
Molti studenti dimenticano di richiamare super() nel costruttore della classe derivata.
18.7 Riepilogo sull’ereditarietà
- una classe derivata estende una classe base;
- i metodi possono essere ridefiniti;
super()richiama il costruttore padre;- l’override personalizza il comportamento;
- la OOP migliora il riuso.
18.8 Domande tipiche d’esame
- Che differenza c’è tra classe base e derivata?
- Quando si usa
super()? - Che cos’è l’override?
- Quali vantaggi offre l’ereditarietà?
18.9 Esercizi
- Crea una classe
Veicoloe una derivataAuto. - Ridefinisci un metodo con override.
- Usa
super()nel costruttore.
Approfondimento ufficiale:
documentazione Python sull’ereditarietà
L’ereditarietà Python è fondamentale nello sviluppo di framework, videogiochi, software di simulazione e robotica, perché consente di creare gerarchie di classi riutilizzabili e facilmente estendibili nel tempo.