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 singingPuoi controllare l’ordine di ereditarietà:
print(Bird.__mro__) # Ordine di risoluzione dei metodiQuesto 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.
Sfida
MedioIn 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 baseDeviceinternet.py- Implementa la classe baseInternetsmartphone.py- Implementa la classeSmartphoneche eredita da entrambe le classi basedriver.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"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
1Fondamenti di OOP
File esterniIntroduzione a OOPClassi vs. oggettiIl parametro selfMetodiAttributiMetodo costruttore (__init__)Riepilogo - Calcolatrice semplice4Ereditarietà
Ereditarietà di baseLa funzione super()Sovrascrittura dei metodiEreditarietà multiplaOrdine di risoluzione dei metodiRiepilogo - Gerarchia dei dipendenti7Metodi speciali
Introduzione ai metodi magiciSovraccarico degli operatoriMetodi magici dei contenitoriRiepilogo - Lista personalizzata10Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneModello SingletonModello FactoryModello ObserverModello Strategy2Decoratori
Introduzione ai decoratoriDecoratore di proprietàDecoratore di metodo staticoDecoratore di metodo di classe5Polimorfismo
Ripasso dell'override dei metodiDuck typingClassi e metodi astrattiProgettazione delle interfacceRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàMixinMetodi statici e di classeDecorator di classeContext manager11Pattern di progettazione - Parte 2
Pattern dei comandiPattern adattatorePattern decoratorePattern metodo templatePattern statoPattern composito3Proprietà delle classi
Variabili di istanza e di classeDecorator delle proprietàAttributi privatiRiepilogo - Gestore di conti bancari6Incapsulamento
Membri pubblici, protetti e privatiModificatori di accessoOccultamento delle informazioniDecorator delle proprietà: avanzatiRipasso - Sistema di registri degli studenti12Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e UtenteSistema di prestitoFunzionalità di ricercaInterfaccia amministratoreTest e integrazioneEsercitati da solo: Compilatore Python online