Polimorfismo
Esplori concetti avanzati della programmazione orientata agli oggetti.
Polimorfismo è una lezione Python For Kids gratuita su CoddyKit. Questa è la lezione 5 di 5. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python For Kids, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python For Kids include 5 lezioni in totale.
Polimorfismo
Bentornato nella lezione sulla programmazione orientata agli oggetti (OOP)! Oggi esploreremo il polimorfismo in Python, un concetto potente che consente agli oggetti di assumere forme diverse.

Che cos'è il polimorfismo?
Il polimorfismo è un concetto fondamentale della OOP che consente di trattare oggetti di classi diverse come oggetti di una superclasse comune. Permette allo stesso metodo di comportarsi in modo diverso in base all'oggetto che lo invoca.
- Definizione: "Molte forme" — la capacità di oggetti diversi di rispondere in modo specifico alla stessa chiamata di metodo.
- Scopo: Aumenta la flessibilità e l'integrazione del codice consentendo di utilizzare oggetti intercambiabili.
Vediamo come funziona il polimorfismo in Python!
Implementazione del polimorfismo
Il polimorfismo può essere ottenuto in Python tramite l'override dei metodi e l'uso di funzioni integrate che funzionano con diversi tipi di oggetti.
- Override dei metodi: Ridefinizione, in una classe figlia, di un metodo già definito nella classe genitrice.
- Funzioni integrate: Funzioni come
len()che funzionano con diversi tipi di dati.
Analizziamo nel dettaglio l'override dei metodi.
Override dei metodi
L'override dei metodi consente a una classe figlia di fornire un'implementazione specifica di un metodo già definito nella classe genitrice. Questo è un aspetto fondamentale del polimorfismo.
Esempio:
# Defines the Animal parent class with a speak method
class Animal:
def speak(self):
print("The animal makes a sound.") # Generic speak method
Creazione di classi figlie con metodi sottoposti a override
Creiamo classi figlie che ereditano da Animal e sottopongono a override il metodo speak per fornire comportamenti specifici.
Esempio:
# Defines the Dog child class inheriting from Animal
class Dog(Animal):
def speak(self):
print("The dog barks.") # Overridden speak method
# Defines the Cat child class inheriting from Animal
class Cat(Animal):
def speak(self):
print("The cat meows.") # Overridden speak method
Uso del polimorfismo con metodi sottoposti a override
Ora creiamo oggetti delle classi figlie e vediamo come mostrano comportamenti diversi utilizzando lo stesso nome di metodo.
Esempio:
# Creates objects of Dog and Cat classes
dog = Dog()
cat = Cat()
# Calls the speak method on both objects
dog.speak() # Output: The dog barks.
cat.speak() # Output: The cat meows.
Polimorfismo con funzioni integrate
Il polimorfismo non è limitato alle classi definite dall'utente. Le funzioni integrate di Python, come len(), funzionano con diversi tipi di dati, dimostrando un comportamento polimorfico.
Esempio:
# Uses len() with a list
my_list = [1, 2, 3, 4]
print(len(my_list)) # Output: 4
# Uses len() with a string
my_string = "Hello"
print(len(my_string)) # Output: 5
# Uses len() with a dictionary
my_dict = {"a": 1, "b": 2}
print(len(my_dict)) # Output: 2
Programma di esempio: calcolo dell'area delle forme
Creiamo un programma che calcola l'area di diverse forme utilizzando il polimorfismo. Definiremo una classe genitrice Shape e le classi figlie Circle e Rectangle, che sottoporranno a override il metodo area.
Codice:
# Defines the Shape parent class with an area method
class Shape:
def area(self):
pass # Placeholder method
# Defines the Circle child class inheriting from Shape
class Circle(Shape):
def __init__(self, radius):
self.radius = radius # Sets the radius of the circle
def area(self):
return 3.14 * self.radius ** 2 # Calculates area of the circle
# Defines the Rectangle child class inheriting from Shape
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width # Sets the width of the rectangle
self.height = height # Sets the height of the rectangle
def area(self):
return self.width * self.height # Calculates area of the rectangle
# Creates objects of Circle and Rectangle classes
circle = Circle(5)
rectangle = Rectangle(4, 6)
# Calculates and prints areas using polymorphism
print("Circle Area:", circle.area()) # Output: Circle Area: 78.5
print("Rectangle Area:", rectangle.area()) # Output: Rectangle Area: 24
# Defines the Vehicle parent class with a move method
class Vehicle:
def move(self):
print("The vehicle moves.")
# Defines the Bicycle child class inheriting from Vehicle
class Bicycle(Vehicle):
def move(self):
print("The bicycle pedals forward.")
# Defines the Airplane child class inheriting from Vehicle
class Airplane(Vehicle):
def move(self):
print("The airplane flies in the sky.")
# Creates objects of Bicycle and Airplane classes
bike = Bicycle()
plane = Airplane()
# Calls the move method on both objects
bike.move()
plane.move()
Ottimo lavoro!
Ha imparato il polimorfismo in Python e come consenta agli oggetti di classi diverse di rispondere in modo specifico alle stesse chiamate di metodo. Il polimorfismo aumenta la flessibilità e la scalabilità del codice, rendendolo più facile da gestire ed estendere. Continui a esercitarsi creando altre classi e metodi che utilizzano un comportamento polimorfico per consolidare la Sua comprensione!

Domande Frequenti
La lezione «Polimorfismo » è gratuita?
Sì — il testo completo di «Polimorfismo » è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python For Kids, passa a CoddyKit PRO. Il corso Python For Kids include 5 lezioni in totale.
Cosa imparerò in «Polimorfismo »?
Esplori concetti avanzati della programmazione orientata agli oggetti. Eserciti Python For Kids con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python For Kids?
Non è richiesta alcuna esperienza precedente. Python For Kids su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 5 di 5.
Quanto tempo richiede la lezione «Polimorfismo »?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python For Kids?
Sì. Ogni lezione Python For Kids include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Introduzione alla programmazione orientata agli oggetti
- Creare classi e oggetti
- Ereditarietà
- Incapsulamento
- Polimorfismo