Menu
Coddy logo textTech

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 Retriever

Usa 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 cane

Chiama 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.

challenge icon

Sfida

Medio

In questa sfida, implementerai una gerarchia di classi Person ed Employee usando l'ereditarietà.

  • person.py: Contiene la classe Person con gli attributi name e age
  • employee.py: Contiene la classe Employee che eredita da Person
  • driver.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()
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