Polimorfismo Python

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
💡 Applicazione pratica

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.
⚠️ Errore comune

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

  1. Che cos’è il polimorfismo?
  2. Che differenza c’è con l’ereditarietà?
  3. Che cos’è il duck typing?
  4. Quali vantaggi offre?

19.8 Esercizi

  1. Crea classi Cane e Gatto con metodo comune.
  2. Simula il polimorfismo in un videogioco con classi Nemico diverse.
  3. 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.


Articoli simili