Polimorfismo in Python
Il polimorfismo è un concetto fondamentale nell’ambito della programmazione orientata agli oggetti che si riferisce alla capacità di oggetti di classi diverse di rispondere a un medesimo metodo in modo diverso. Questo concetto favorisce la modularità , la flessibilità e la riutilizzabilità del codice. Esploriamo come il polimorfismo si manifesta attraverso le classi e l’ereditarietà in Python.
Polimorfismo nelle Classi
Nelle classi, il polimorfismo può essere realizzato mediante l’implementazione di metodi con lo stesso nome in diverse classi. Ogni classe può definire il proprio comportamento per il metodo.
class Cane:
def verso(self):
return "Abbau abbau!"
class Gatto:
def verso(self):
return "Miao miao!"
animali = [Cane(), Gatto()]
for animale in animali:
print(animale.verso())
In questo esempio, sia la classe Cane
che la classe Gatto
hanno un metodo verso()
. Sebbene abbiano nomi di metodo identici, producono output diversi.
Polimorfismo nell’EreditarietÃ
Il polimorfismo viene ampliato nell’ereditarietà , dove classi derivate possono sovrascrivere i metodi della classe genitore per fornire comportamenti specifici.
class Veicolo:
def suona_clacson(self):
return "Beep beep!"
class Automobile(Veicolo):
def suona_clacson(self):
return "Tut tut!"
class Camion(Veicolo):
def suona_clacson(self):
return "Honk honk!"
veicoli = [Automobile(), Camion()]
for veicolo in veicoli:
print(veicolo.suona_clacson())
Qui, Automobile
e Camion
sono sottoclassi di Veicolo
e sovrascrivono il metodo suona_clacson()
della classe genitore.
Vantaggi del Polimorfismo
- Riutilizzo del Codice: Il polimorfismo permette di utilizzare interfacce comuni e codice condiviso tra diverse classi.
- Flessibilità : Le classi possono essere scambiate senza modificare il codice che le utilizza, purché rispettino le interfacce comuni.
- Estensibilità : È possibile aggiungere nuove classi senza alterare il codice esistente, a condizione che rispettino le interfacce richieste.
Conclusione
Il polimorfismo è un concetto chiave nella programmazione orientata agli oggetti che favorisce la modularità e la flessibilità del codice. Consente a oggetti di classi diverse di rispondere a metodi comuni in modi diversi, aumentando la riutilizzabilità e la facilità di estensione. Nelle classi e nell’ereditarietà , il polimorfismo è un principio potente per creare soluzioni eleganti e adattabili.