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.
In conclusione la funzione super ha esteso il comportamento del metodo1().
E così via.