La super funzione in Python
Questo tutorial spiegherà lo scopo e l’uso della funzione incorporata super()
in Python. Uno dei concetti fondamentali della programmazione orientata agli oggetti (OOP) è l’ereditarietà, in cui una classe (sottoclasse) può accedere alle proprietà e ai metodi della classe genitore o della superclasse.
In più eredità, una classe può ereditare proprietà e metodi da più classi, il che significa che la classe avrà più super classi. La funzione super()
è utile e utilizzata principalmente in caso di eredità multiple, i dettagli e l’uso della funzione super()
con esempi di codice saranno discussi in questo tutorial.
Usa la funzione incorporata super()
in Python
La funzione super()
accede ai metodi ereditati sovrascritti in una classe. La funzione super()
è usata nella classe figlia con ereditarietà multipla per accedere alla funzione della prossima classe genitore o superclasse. La funzione super()
determina la successiva classe genitore utilizzando il Method Resolution Order (MRO). Come se l’MRO fosse C -> D -> B -> A -> object
, per D
, la funzione super()
cercherà la prossima classe genitore o metodo superclasse in sequenza D -> B -> A -> object
.
Se la classe è una singola classe di ereditarietà, in quel caso, la funzione super()
è utile per usare i metodi delle classi genitrici senza usare esplicitamente il loro nome.
La funzione super(type)
restituisce un oggetto proxy che chiama i metodi della classe genitore o fratello dell’input type
. La sintassi di super()
è diversa in Python 2 e 3, possiamo usare la funzione super()
in Python 2 per chiamare il metodo ereditato mymethod()
come super(type, self).mymethod(args)
e in Python 3 come super().mymethod(args)
.
Ora, esaminiamo i codici di esempio dettagliati dell’uso della funzione super()
per chiamare i metodi ereditati dalla classe figlia in Python.
Codice di esempio:
class mysuper_class(object):
def super_method(self):
print("Method of the super class was called!")
class myclass(mysuper_class):
def mymethod(self):
super().super_method()
a = myclass()
a.mymethod()
Produzione:
Method of the super class was called