Pytonorm

Python super () -funktion

Python super () -funktion
Ett Python-skript kan göra både strukturerad programmering och Object-Oriented-Programming (OOP). Super () är en inbyggd Python-funktion av OOP. Den grundläggande kunskapen om OOP föredras för att förstå syftet och användningen av super() metod. En av de viktiga funktionerna i OOP är Inheritance. En ny klass kan skapas genom att ärva en annan klass funktioner, och den kallas Inheritance. Här kallas den nya klassen underklass eller underklass, och en annan klass kallas superklass eller föräldraklass. Super () -funktionen används i underklassen för att hänvisa till föräldraklassen och få tillgång till alla överordnade klassvariabler och metoder. Denna funktion gör arvet mer hanterbart. Hur denna funktion kan användas i Python har visat i denna handledning.

Exempel 1: Användning av super () -funktionen i enstaka arv

När en underordnad klass skapas genom att ärva en förälderklass, kallas den enstaka arv. Användningen av super() funktion i enstaka arv har visats i följande skript. bok är den överordnade klassen här som innehåller en konstruktormetod för att initiera data, bookType () metod för att skriva ut boktypen och rabatt() metod för att visa rabatterbjudandet är tillgängligt eller inte. Eng_book är barnklassen här som innehåller en konstruktörmetod där super() -funktionen används för att anropa konstruktören för föräldraklassen. Barnklassen har en annan metod som heter display_details () för att skriva ut detaljerad information i boken. Objekten för både föräldrar- och barnklasser har skapats senare för att kalla klassens olika metoder.

# Definiera föräldraklassen
klassbok:
# Definiera konstruktör
def __init __ (själv, titel, författare, typ, erbjudande):
själv.titel = titel
själv.författare = författare
själv.typ = typ
själv.erbjudande = erbjudande
# Definiera funktionen för att visa boktypen
def bookType (själv):
om själv.typ == 1:
skriva ut ("% s är en% s-bok."% (själv.titel, 'Engineering'))
om själv.typ == 2:
skriva ut ("% s är en% s-bok."% (själv.titel, "medicinsk"))
om själv.typ == 3:
skriva ut ("% s är en% s-bok."% (själv.titel, 'Ekonomi'))
# Definiera funktionen för att visa rabatterbjudandet
def rabatt (själv):
om själv.erbjudande == True:
tryck ("Boken har rabatterbjudande.")
annan:
tryck ("Boken har inget rabatterbjudande.")
# Definiera barnklassen
klass Eng_book (Bok):
# Definiera konstruktör
def __init __ (själv, titel, författare, typ, erbjudande, pris):
super().__init __ (titel, författare, typ, erbjudande)
själv.pris = pris
# Definiera funktionen för att visa bokdetaljerna
def display_details (själv):
super().rabatt()
om själv.erbjudande == True:
själv.pris = själv.pris - själv.pris * 0.15
skriva ut ("Boknamn:% s"% själv.titel)
skriva ut ("Författarnamn:% s"% själv.författare)
tryck ("Pris:% 0.2f "% själv.pris)
skriva ut ("Använda föräldraklass:")
# Definiera objekt för överordnad klass
objbook = Book ('Medical Microbiology', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, False)
# Samtalsfunktion för att visa boktyp
objbook.bookType ()
# Ringfunktion för att visa rabatterbjudande
objbook.rabatt()
skriva ut ("\ nAnvända barnklass:")
# Definiera objekt för barnklassen
objEngBook = Eng_book ('Engineering Mathematics', 'H K Dass', 1, True, 50)
# Ringfunktion för att visa bokdetaljer
objEngBook.display_details ()

Produktion:

Följande utdata visas efter att ovanstående skript har körts. Den första utgången har genererats med hjälp av moderklassens objekt, och den andra utgången har genererats med hjälp av objektet för underklassen.

Exempel 2: Användning av super () -funktionen i flera arv

När en ny klass genereras genom att ärva flera klasser kallas denna typ av arv flera arv. Användningen av super () -funktionen i flera arv har visats i följande skript. Avdelning är den överordnade klassen som innehåller en konstruktormetod för att initialisera variablerna och visa() metod för att skriva ut avdelningsnamnet. Kurser är barnklassen ärvda från Avdelning klass, och den innehåller en konstruktörmetod och display_Course_info () metod för att visa kursens detaljer. Lärare är barnklassen ärvda från Avdelning klass, och den innehåller en konstruktörmetod och display_Teacher_info () metod för att visa lärarens detaljer. Lärarkurs är den sista underklassen i manuset som har definierats genom att ärva båda Kurser och Lärare klasser. Objekten för de tre barnklasserna har skapats i slutet av manuset för att få tillgång till klassens olika metoder. De super() funktionen har använts i konstruktormetoden för alla barnklasser för att ringa föräldraklassens konstruktör. Fyra argumentvärden krävs för att skapa underordnad klassobjekt eftersom avdelningsklassens konstruktion innehåller fyra argument.

# Definiera föräldraklass
klass Avdelning ():
def __init __ (själv, dept_name, total_courses, total_credit, total_teachers):
själv.avdelningsnamn = avdelningsnamn
själv.total_courses = total_courses
själv.total_kredit = total_kredit
själv.total_lärare = total_lärare
def-display (själv):
skriva ut ("Avdelningsnamn:% s"% själv.avdelningsnamn)
# Definiera första barnklassen
klasskurser (Institution):
def __init __ (själv, namn, kurser, poäng, lärare):
# Ring föräldraklasskonstruktören
super().__init __ (namn, kurser, poäng, lärare)
def display_Course_info (själv):
tryck ("Totalt antal kurser:% d"% själv.totalt_kurser)
skriva ut ("Totala poäng:% d"% själv.total_kredit)
# Definiera den andra barnklassen
klasslärare (avdelning):
def __init __ (själv, namn, kurser, poäng, lärare):
# Ring föräldraklasskonstruktören
super().__init __ (namn, kurser, poäng, lärare)
def display_Teacher_info (själv):
tryck ("Totalt antal lärare:% d"% själv.totalt_lärare)
# Definiera den tredje barnklassen som ärvs från två klasser
klass Teacher_Course (Kurser, lärare):
def __init __ (själv, namn, kurser, poäng, lärare):
# Ring föräldraklasskonstruktören
super().__init __ (namn, kurser, poäng, lärare)
def display_details (själv):
super().visa()
super().display_Course_info ()
super().display_Teacher_info ()
skriva ut ("Använda första barnklassen")
objCourses = Kurser ('CSE', 72, 150, 50)
objektKurser.visa()
objCourses.display_Course_info ()
skriva ut ("\ nAnvända andra barnklassen")
objTeachers = Lärare ('BBA', 65, 140, 55)
objTeachers.visa()
objTeachers.display_Teacher_info ()
skriva ut ("\ nAnvända den tredje underordnade klassen som ärvs från flera klasser")
objDCT = Teacher_Course ('engelska', 60, 122, 20)
objDCT.display_details ()

Produktion:

Följande utdata visas efter att ovanstående skript har körts. Tre resultat har genererats här genom att skapa objekt för tre barnklasser.

Slutsats:

De super() -funktionen kan bara användas inom barnklassen för att ringa konstruktören och alla andra föräldraklassmetoder. Användningen av denna funktion har visats i denna handledning genom att skapa en och flera nivåer Arv. Jag hoppas att syftet med att använda den här funktionen i OOP kommer att rensas efter att ha läst denna handledning.

Mus Hur man använder Xdotool för att stimulera musklick och tangenttryckningar i Linux
Hur man använder Xdotool för att stimulera musklick och tangenttryckningar i Linux
Xdotool är ett ledigt verktyg för öppen källkod för simulering av musklick och tangenttryckningar. Den här artikeln kommer att täcka en kort guide om ...
Mus Topp 5 Ergonomiska datormusprodukter för Linux
Topp 5 Ergonomiska datormusprodukter för Linux
Ger långvarig datoranvändning smärta i handleden eller fingrarna? Lider du av styva leder och måste ständigt skaka hand? Känner du en brännande smärta...
Mus Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
De flesta Linux-distributioner levereras med "libinput" -bibliotek som standard för att hantera inmatningshändelser i ett system. Den kan bearbeta inm...