Python

Python super () funktion

Python super () funktion
Et Python-script kan både strukturere programmering og Object-Oriented-Programming (OOP). Super () er en indbygget Python-funktion af OOP. Den grundlæggende viden om OOP foretrækkes for at forstå formålet og brugen af super() metode. Et af de vigtige træk ved OOP er arv. En ny klasse kan oprettes ved at arve en anden klasses funktioner, og den kaldes arv. Her kaldes den nye klasse underklasse eller underklasse, og en anden klasse kaldes superklasse eller overordnet klasse. Super () funktionen bruges i underordnet klasse til at henvise til forældreklassen og få adgang til alle forældreklassevariabler og -metoder. Denne funktion gør arv mere håndterbar. Hvordan denne funktion kan bruges i Python har vist i denne vejledning.

Eksempel 1: Brug af super () -funktionen i enkelt arv

Når en underordnet klasse oprettes ved at arve en overordnet klasse, kaldes den enkelt arv. Brugen af super() funktion i enkelt arv er vist i det følgende script. Bestil er den overordnede klasse her, der indeholder en konstruktormetode til at initialisere dataene, bogtype () metode til at udskrive bogtypen, og rabat() metode til at vise rabattilbud er tilgængelig eller ej. Eng_book er barneklassen her, der indeholder en konstruktormetode, hvor super() -funktion bruges til at kalde konstruktøren til overordnet klasse. Børneklassen har en anden metode, der hedder display_details () at udskrive de detaljerede oplysninger i bogen. Objekterne for både forældre- og barneklasser er oprettet senere for at kalde klassernes forskellige metoder.

# Definer overordnet klasse
klasse Bog:
# Definer konstruktør
def __init __ (selv, titel, forfatter, type, tilbud):
selv.titel = titel
selv.forfatter = forfatter
selv.type = type
selv.tilbud = tilbud
# Definer funktionen til visning af bogtypen
def bookType (selv):
hvis selv.type == 1:
print ("% s er en% s bog."% (selv.titel, 'Engineering'))
hvis selv.type == 2:
print ("% s er en% s bog."% (selv.titel, 'Medicinsk'))
hvis selv.type == 3:
print ("% s er en% s bog."% (selv.titel, 'Finans'))
# Definer funktionen til at vise rabattilbudet
def rabat (selv):
hvis selv.tilbud == Sandt:
print ("Bogen har rabat tilbud.")
andet:
print ("Bogen har ikke noget tilbudstilbud.")
# Definer barneklassen
klasse Eng_book (Bog):
# Definer konstruktør
def __init __ (selv, titel, forfatter, type, tilbud, pris):
super().__init __ (titel, forfatter, type, tilbud)
selv.pris = pris
# Definer funktionen til at få vist bogoplysningerne
def display_details (selv):
super().rabat()
hvis selv.tilbud == Sandt:
selv.pris = selv.pris - selv.pris * 0.15
print ("Bognavn:% s"% selv.titel)
print ("Forfatternavn:% s"% selv.forfatter)
print ("Pris:% 0.2f "% selv.pris)
udskriv ("Brug af overordnet klasse:")
# Definer objekt for forældreklassen
objbook = Bog ('Medicinsk mikrobiologi', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, Falsk)
# Opkaldsfunktion for at få vist bogtype
objbook.bogtype ()
# Opkaldsfunktion for at få vist rabattilbud
objbook.rabat()
print ("\ nBrug af underordnet klasse:")
# Definer objekt i barneklassen
objEngBook = Eng_book ('Engineering Mathematics', 'H K Dass', 1, True, 50)
# Opkaldsfunktion for at få vist bogoplysninger
objEngBook.display_details ()

Produktion:

Følgende output vises efter udførelse af ovenstående script. Den første output er genereret ved hjælp af den overordnede klasses objekt, og den anden output er genereret ved hjælp af objektet fra underklassen.

Eksempel 2: Brug af super () -funktionen i flere arv

Når en ny klasse genereres ved at arve flere klasser, kaldes denne type arv flere arv. Brugen af ​​super () -funktionen i flere arvninger er vist i det følgende script. Afdeling er den overordnede klasse, der indeholder en konstruktormetode til at initialisere variablerne og Skærm() metode til at udskrive afdelingens navn. Kurser er barneklassen arvet fra Afdeling klasse, og den indeholder en konstruktormetode og display_Course_info () metode til at vise kursets detaljer. Lærere er barneklassen arvet fra Afdeling klasse, og den indeholder en konstruktormetode og display_Teacher_info () metode til at vise lærerens detaljer. Lærer_Kursus er den sidste underklasse i scriptet, der er defineret ved at arve begge dele Kurser og Lærere klasser. Objekterne for de tre barneklasser er oprettet i slutningen af ​​scriptet for at få adgang til klassernes forskellige metoder. Det super() funktionen er blevet brugt inden for konstruktormetoden i alle underordnede klasser for at kalde forældreklassens konstruktør. Fire argumentværdier kræves for at oprette underordnet klasseobjekt, fordi afdelingsklassens konstruktion indeholder fire argumenter.

# Definer overordnet klasse
klasse Afdeling ():
def __init __ (selv, dept_name, total_courses, total_credit, total_teachers):
selv.dept_name = dept_name
selv.total_courses = total_courses
selv.total_kredit = total_kredit
selv.total_lærere = total_lærere
def display (selv):
print ("Afdelingsnavn:% s"% selv.dept_name)
# Definer den første barneklasse
klassekurser (afdeling):
def __init __ (selv, navn, kurser, point, lærere):
# Ring til forældreklassekonstruktør
super().__init __ (navn, kurser, point, lærere)
def display_Course_info (selv):
print ("Samlede kurser:% d"% selv.samlede kurser)
print ("Samlede kreditter:% d"% selv.totalkredit)
# Definer den anden barneklasse
klasselærere (afdeling):
def __init __ (selv, navn, kurser, point, lærere):
# Ring til forældreklassekonstruktør
super().__init __ (navn, kurser, point, lærere)
def display_Teacher_info (selv):
print ("Total Teachers:% d"% self.total_lærere)
# Definer den tredje barneklasse, der er arvet fra to klasser
klasse Teacher_Course (Kurser, lærere):
def __init __ (selv, navn, kurser, point, lærere):
# Ring til forældreklassekonstruktøren
super().__init __ (navn, kurser, point, lærere)
def display_details (selv):
super().Skærm()
super().display_Course_info ()
super().display_Teacher_info ()
print ("Brug af den første barneklasse")
objCourses = Kurser ('CSE', 72, 150, 50)
objCourses.Skærm()
objCourses.display_Course_info ()
print ("\ nBrug af anden underordnet klasse")
objTeachers = Lærere ('BBA', 65, 140, 55)
objTeachers.Skærm()
objTeachers.display_Teacher_info ()
print ("\ nBrug af den tredje underordnede klasse arvet fra flere klasser")
objDCT = Teacher_Course ('engelsk', 60, 122, 20)
objDCT.display_details ()

Produktion:

Følgende output vises efter udførelse af ovenstående script. Tre output er genereret her ved at oprette objekterne i tre barneklasser.

Konklusion:

Det super() funktionen kan kun bruges inden for underordnet klasse til at ringe til konstruktøren og enhver anden overordnet klassemetode. Anvendelsen af ​​denne funktion er vist i denne vejledning ved at oprette arv på en enkelt og flere niveauer. Jeg håber, at formålet med at bruge denne funktion i OOP bliver ryddet efter at have læst denne vejledning.

Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...