La funzione super()
Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 18 di 64.
La funzione super() permette a una classe figlia di chiamare i metodi della classe genitore. Questo ti consente di estendere le funzionalità della classe genitore invece di sostituirle completamente.
Ecco un esempio di utilizzo di super() nel costruttore:
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Chiama il metodo __init__ della classe genitore
self.breed = breed
print(f"Dog breed set: {breed}")Crea un oggetto cane:
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Output:
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverUsa super() per estendere i metodi della classe genitore:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Chiama prima il metodo della classe genitore
print("Woof!") # Aggiungi un comportamento specifico del caneChiama il metodo esteso:
buddy = Dog()
buddy.make_sound()Output:
Generic animal sound
Woof!Senza super(), perderesti le funzionalità della classe genitore:
class Cat(Animal):
def make_sound(self):
print("Meow!") # Solo il verso del gatto, il metodo della classe genitore viene ignorato
cat = Cat()
cat.make_sound()Output:
Meow!Punto chiave: usa super() per chiamare i metodi della classe genitore dalle classi figlie. Questo ti permette di estendere le funzionalità invece di sostituirle completamente. Gli usi più comuni includono chiamare i metodi __init__ della classe genitore ed estenderne il comportamento.
Sfida
MedioIn questa sfida, implementerai una gerarchia di classi Person ed Employee usando l'ereditarietà.
person.py: Contiene la classe Person con gli attributi name e ageemployee.py: Contiene la classe Employee che eredita da Persondriver.py: File principale per testare la tua implementazione
Ogni file contiene commenti TODO dettagliati che ti guideranno nell'implementazione.
Provalo tu
# TODO: Importa la classe Person da person.py
# TODO: Importa la classe Employee da employee.py
def main():
# TODO: Crea un oggetto Person con nome "Alice" ed età 30
person = None
# TODO: Crea un oggetto Employee con nome "Bob", età 35 e professione "Developer"
employee = None
# TODO: Chiama il metodo introduce() sull'oggetto Person
# Output previsto: "Hi, I'm Alice and I'm 30 years old"
# TODO: Stampa una riga vuota per separare l'output - print()
# TODO: Chiama il metodo introduce() sull'oggetto Employee
# Output previsto:
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()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