Python >> Python Program >  >> Python

Superfunktionen i Python

Denna handledning kommer att förklara syftet och användningen av den inbyggda super() funktion i Python. Ett av kärnkoncepten i objektorienterad programmering (OOP) är arv, där en klass (underklass) kan komma åt egenskaperna och metoderna för den överordnade klassen eller superklassen.

I flera arv kan en klass ärva egenskaper och metoder från flera klasser, vilket innebär att klassen kommer att ha flera superklasser. super() Funktionen är användbar och används främst vid flera arv, detaljerna och användningen av super() funktion med kodexempel kommer att diskuteras i denna handledning.

Använd den inbyggda funktionen super() i Python

super() funktionen får åtkomst till de åsidosatta ärvda metoderna i en klass. super() funktion används i den underordnade klassen med flera arv för att komma åt funktionen för nästa förälderklass eller superklass. super() funktionen bestämmer nästa överordnade klass med hjälp av Method Resolution Order (MRO). Som om MRO är C -> D -> B -> A -> object , för D , super() funktionen kommer att leta efter nästa överordnade klass eller superklassmetod i sekvensen D -> B -> A -> object .

Om klassen är en enskild arvsklass, i så fall super() funktion är användbar för att använda metoderna för de överordnade klasserna utan att använda deras namn explicit.

super(type) funktion returnerar ett proxyobjekt som anropar metoderna för förälder- eller syskonklassen för ingången type . Syntaxen för super() är annorlunda i Python 2 och 3, kan vi använda super() funktion i Python 2 för att anropa den ärvda metoden mymethod() som super(type, self).mymethod(args) och i Python 3 som super().mymethod(args) .

Lär dig Python:Python Handledning för nybörjare 2022 | Modul 1 [Funktioner, Variabler, Tal, Sträng ]

Låt oss nu titta på detaljerade exempelkoder för användning av super() funktion för att anropa de ärvda metoderna från den underordnade klassen i Python.

Exempelkod:

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()

Utdata:

Method of the super class was called

Tidigare inlägg