Menu
Coddy logo textTech

Ereditarietà multipla

Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 20 di 64.

L’ereditarietà multipla consente a una classe di ereditare da più di una classe genitore, combinando funzionalità provenienti da fonti diverse.

Ecco due classi genitrici:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def eat(self):
        return f"{self.name} is eating"

class Flyable:
    def fly(self):
        return f"{self.name} is flying"

Crea una classe figlia che eredita da entrambi i genitori:

class Bird(Animal, Flyable):
    def __init__(self, name, species):
        super().__init__(name)  # Chiama __init__ di Animal
        self.species = species
    
    def sing(self):
        return f"{self.name} is singing"

La sintassi class Bird(Animal, Flyable): significa che Bird eredita sia da Animal sia da Flyable.

Crea un oggetto uccello e usa i metodi di entrambi i genitori:

sparrow = Bird("Sparrow", "House sparrow")

Chiama i metodi della prima classe genitore:

print(sparrow.eat())

Chiama i metodi della seconda classe genitore:

print(sparrow.fly())

Chiama il metodo del passero:

print(sparrow.sing())

Output:

Sparrow is eating
Sparrow is flying
Sparrow is singing

Puoi controllare l’ordine di ereditarietà:

print(Bird.__mro__)  # Ordine di risoluzione dei metodi

Questo mostra quale genitore viene controllato per primo quando si cercano i metodi.

Punto chiave: l'ereditarietà multipla usa la sintassi class Child(Parent1, Parent2):. La classe figlia eredita tutti i metodi da tutte le classi genitore. Python controlla le classi genitore da sinistra a destra quando cerca i metodi.

challenge icon

Sfida

Medio

In questa sfida implementerai un sistema di classi su più file che dimostra l’ereditarietà multipla con gli smartphone. Ogni classe è organizzata nel proprio file per migliorare l’organizzazione del codice.

Dovrai modificare questi file:

  • device.py - Implementa la classe base Device
  • internet.py - Implementa la classe base Internet
  • smartphone.py - Implementa la classe Smartphone che eredita da entrambe le classi base
  • driver.py - Implementa i casi di test che verificheranno il corretto funzionamento della tua implementazione

Ogni file contiene commenti dettagliati TODO che ti guideranno passo dopo passo nell’implementazione.

Provalo tu

# TODO: Importa la classe Smartphone da smartphone.py

# Crea uno smartphone e verifica i suoi metodi
# TODO: Crea un oggetto Smartphone con marca "Apple" e modello "iPhone 13"
my_phone = None

# TODO: Chiama e stampa il risultato del metodo power_on() dello smartphone

# TODO: Chiama e stampa il risultato del metodo connect() dello smartphone

# TODO: Chiama e stampa il risultato del metodo make_call() dello smartphone con il parametro "123-456-7890"
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Python online