La funzione super di python

La funzione super del linguaggio python mi permette di estendere o modificare il metodo di una classe base nella classe figlia che lo eredita.

La sintassi

super(classe figlia, nome metodo)

La funzione ha due argomenti

  • Il nome della classe figlia ( sottoclasse ) che eredita il metodo dalla classe madre ( o base ).
  • Il nome del metodo da estendere nella classe figlia.

    Un esempio pratico

    Creo la classe base Classe1

    class Classe1(object):
    def metodo1(self):
    print('A')

    Poi creo la classe figlia Classe2 che eredita le proprietà della Classe1.

    class Classe2(Classe1):
    def metodo2(self):
    super(Classe2, self).metodo1()
    print('B')

    Nella classe figlia definisco un metodo(metodo2).

    Nella definizione utilizzo la funzione super() per riprendere il metodo1() dalla classe base (Classe1).

    Infine aggiungo un'istruzione per stampare il carattere "B".

    A cosa serve?

    Per capirlo assegno la classe Classe2 a una variabile (b).

    Poi richiamo ed eseguo il metodo 2.

    b = Classe2()
    b.metodo2()

    Il risultato dell'output è il seguente:

    A
    B

    Il metodo 2 della classe 2 ha eseguito il metodo 1 della classe 1, stampando il carattere "A".

    Poi ha stampato il carattere "B" del metodo 2 della classe 2.

    il funzionamento della funzione super

    In conclusione la funzione super ha esteso il comportamento del metodo1().

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Classi Python