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 klasseklasse 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 klasseklasse 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.