Python superfunksjon

Python superfunksjon
Et Python-skript kan gjøre både strukturert programmering og objektorientert programmering (OOP). Super () er en innebygd Python-funksjon av OOP. Den grunnleggende kunnskapen om OOP er å foretrekke å forstå formålet og bruken av super() metode. En av de viktige funksjonene ved OOP er arv. En ny klasse kan opprettes ved å arve en annen klasses funksjoner, og den kalles arv. Her heter den nye klassen underklasse eller barneklasse, og en annen klasse kalles superklasse eller foreldreklasse. Super () Funksjon brukes i barneklassen for å referere til foreldreklassen og få tilgang til alle foreldreklassevariablene og metodene. Denne funksjonen gjør arven mer håndterbar. Hvordan denne funksjonen kan brukes i Python har vist i denne opplæringen.

Eksempel-1: Bruk av super () -funksjon i enkelt arv

Når en barneklasse er opprettet ved å arve en foreldreklasse, kalles den en enkelt arv. Bruken av super() Funksjon i enkeltarv har vist i følgende skript. Bok er foreldreklassen her som inneholder en konstruktørmetode for å initialisere dataene, BookType () metode for å skrive ut bokens type, og rabatt() metode for å vise rabatttilbudet er tilgjengelig eller ikke. Eng_book er barneklassen her som inneholder en konstruktørmetode der super() Funksjon brukes til å ringe konstruktøren til foreldreklassen. Barneklassen har en annen metode som heter display_details () For å skrive ut detaljert informasjon om boka. Gjenstandene til både foreldre- og barneklasser er opprettet senere for å kalle klassenes forskjellige metoder.

# Definer foreldreklassen
Klassebok:
# Definer konstruktør
def __init __ (selv, tittel, forfatter, type, tilbud):
selv-.tittel = tittel
selv-.Forfatter = forfatter
selv-.type = type
selv-.tilbud = tilbud
# Definer funksjonen for å vise boktypen
def booktype (selv):
Hvis selv.type == 1:
trykk (" %s er en %s bok." %(selv.tittel, 'Engineering')))
Hvis selv.type == 2:
trykk (" %s er en %s bok." %(selv.tittel, 'medisinsk'))
Hvis selv.type == 3:
trykk (" %s er en %s bok." %(selv.tittel, 'økonomi'))
# Definer funksjonen for å vise rabatttilbudet
def rabatt (selv):
Hvis selv.tilbud == sant:
trykk ("Boken har rabatttilbud.")
ellers:
trykk ("Boken har ikke noe rabatttilbud.")
# Definer barneklassen
Klasse Eng_book (bok):
# Definer konstruktør
def __init __ (selv, tittel, forfatter, type, tilbud, pris):
super().__init __ (tittel, forfatter, type, tilbud)
selv-.Pris = pris
# Definer funksjonen for å vise bokdetaljene
def display_details (selv):
super().rabatt()
Hvis selv.tilbud == sant:
selv-.Pris = selv.Pris - selv.Pris * 0.15
Print ("Boknavn: %S" %Selv.tittel)
trykk ("Forfatternavn: % s" % selv.forfatter)
Print ("Pris: %0.2f " % selv.pris)
trykk ("Bruke foreldreklasse:")
# Definer objekt for foreldreklassen
objbook = bok ('Medical Microbiology', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, falsk)
# Samtalefunksjon for å vise boktype
objbook.BookType ()
# Samtalefunksjon for å vise rabatttilbud
objbook.rabatt()
trykk ("\ nusing barneklasse:")
# Definer objekt for barneklasse
OBJENGBOOK = ENG_BOOK ('Engineering Mathematics', 'H K Dass', 1, True, 50)
# Samtalefunksjon for å vise bokdetaljer
Objengbook.display_details ()

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. Den første utgangen har generert ved å bruke foreldreklassens objekt, og den andre utgangen har generert ved å bruke objektet til barneklassen.

Eksempel-2: Bruk av Super () -funksjon i flere arv

Når en ny klasse genereres ved å arve flere klasser, kalles denne typen arv flere arv. Bruken av Super () -funksjonen i flere arv har vist i følgende skript. Avdeling er foreldreklassen som inneholder en konstruktørmetode for å initialisere variablene og vise() Metode for å skrive ut avdelingsnavnet. Kurs er barneklassen arvet fra Avdeling klasse, og den inneholder en konstruktørmetode og display_course_info () metode for å vise kursets detaljer. Lærere er barneklassen arvet fra Avdeling klasse, og den inneholder en konstruktørmetode og display_teacher_info () metode for å vise lærerens detaljer. Lærer_Course er den siste barneklassen på manuset som er blitt definert ved å arve begge deler Kurs og Lærere klasser. Objektene til de tre barneklassene er opprettet på slutten av manuset for å få tilgang til klassenes forskjellige metoder. De super() Funksjon har blitt brukt inne i konstruktørmetoden for alle barneklasser for å ringe foreldreklassens konstruktør. Fire argumentverdier er nødvendige for å opprette barneklasseobjektet fordi avdelingsklassens konstruksjon inneholder fire argumenter.

# Definer foreldreklasse
Klasseavdeling ():
def __init __ (self, dept_name, total_courses, total_credit, total_teachers):
selv-.Dept_name = Dept_name
selv-.Total_Courses = Total_Courses
selv-.total_credit = total_credit
selv-.total_teachers = total_teachers
def display (selv):
Print ("Avdelingsnavn: % S" % Selv.Dept_name)
# Definer den første barneklassen
Klassekurs (avdeling):
def __init __ (selv, navn, kurs, studiepoeng, lærere):
# Ring foreldreklassekonstruktør
super().__init __ (navn, kurs, studiepoeng, lærere)
def display_course_info (selv):
Print ("Total kurs: % D" % selv.total_courses)
Print ("Total studiepoeng: % d" % selv.total_credit)
# Definer den andre barneklassen
Klasselærere (avdeling):
def __init __ (selv, navn, kurs, studiepoeng, lærere):
# Ring foreldreklassekonstruktør
super().__init __ (navn, kurs, studiepoeng, lærere)
def display_teacher_info (self):
trykk ("Total lærere: % d" % selv.total_teachers)
# Definer den tredje barneklassen som er arvet fra to klasser
Klasselærer_Course (kurs, lærere):
def __init __ (selv, navn, kurs, studiepoeng, lærere):
# Ring foreldreklassekonstruktøren
super().__init __ (navn, kurs, studiepoeng, lærere)
def display_details (selv):
super().vise()
super().display_course_info ()
super().display_teacher_info ()
trykk ("Bruke den første barneklassen")
objcourses = kurs ('CSE', 72, 150, 50)
objcourses.vise()
objcourses.display_course_info ()
trykk ("\ nusing the Second Child Class")
objteachers = lærere ('BBA', 65, 140, 55)
objteachers.vise()
objteachers.display_teacher_info ()
trykk ("\ nusing the Third Child Class arvet fra flere klasser")
OBJDCT = Teacher_Course ('engelsk', 60, 122, 20)
objdct.display_details ()

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor. Tre utganger har blitt generert her ved å lage gjenstandene til tre barneklasser.

Konklusjon:

De super() Funksjon kan bare brukes inne i barneklassen for å ringe konstruktøren og enhver annen foreldreklassemetode. Bruken av denne funksjonen har blitt vist i denne opplæringen ved å opprette arv og flernivå arv. Jeg håper hensikten med å bruke denne funksjonen i OOP vil bli ryddet etter å ha lest denne opplæringen.