Capitolo 19 – Polimorfismo Python
In questo capitolo studiamo il polimorfismo Python, concetto fondamentale della programmazione a oggetti che permette a oggetti diversi di rispondere allo stesso metodo in modo differente.
Materiale originale a cura di Alfredo Di Fiore – megistone.it
Manuale completo:
vai all’indice del corso
Il polimorfismo consente di usare la stessa interfaccia per oggetti diversi, semplificando il codice e aumentando l’estendibilità del software.
19.1 Obiettivi formativi
- comprendere il concetto di polimorfismo;
- ridefinire metodi;
- usare override con ereditarietà;
- introdurre il duck typing;
- capire il vantaggio OOP.
19.2 Polimorfismo con override
Classi diverse possono implementare lo stesso metodo in modo specifico.
class Cane:
def verso(self):
print("Bau")
class Gatto:
def verso(self):
print("Miao")
19.3 Uso del polimorfismo Python
animali = [Cane(), Gatto()]
for a in animali:
a.verso()
Output:
Bau
Miao
Il polimorfismo è fondamentale nei framework grafici, videogiochi, robotica e simulatori per gestire oggetti diversi con la stessa logica.
19.4 Duck typing
In Python conta il comportamento dell’oggetto, non il suo tipo esplicito.
class Persona:
def saluta(self):
print("Ciao")
class Robot:
def saluta(self):
print("Salve umano")
Entrambi possono essere usati nello stesso modo se possiedono il metodo richiesto.
19.5 Vantaggi del polimorfismo
- codice più flessibile;
- maggiore estendibilità;
- riuso delle interfacce;
- minore duplicazione;
- software più elegante.
Molti studenti confondono polimorfismo con semplice ereditarietà: il punto chiave è il comportamento condiviso.
19.6 Riepilogo sul polimorfismo
- oggetti diversi rispondono allo stesso metodo;
- l’override personalizza il comportamento;
- il duck typing è tipico di Python;
- il codice diventa più astratto;
- la OOP migliora il design.
19.7 Domande tipiche d’esame
- Che cos’è il polimorfismo?
- Che differenza c’è con l’ereditarietà?
- Che cos’è il duck typing?
- Quali vantaggi offre?
19.8 Esercizi
- Crea classi
CaneeGattocon metodo comune. - Simula il polimorfismo in un videogioco con classi
Nemicodiverse. - Implementa un esempio di duck typing.
Approfondimento ufficiale:
documentazione Python sulle classi e OOP
Il polimorfismo Python è ampiamente utilizzato nello sviluppo di robot, simulatori, videogiochi e sistemi di intelligenza artificiale, dove oggetti diversi devono rispondere agli stessi comandi con comportamenti specifici.