Python

Python super () -funksjon

Python super () -funksjon
Et Python-skript kan gjøre både strukturert programmering og Object-Oriented-Programming (OOP). Super () er en innebygd Python-funksjon av OOP. Den grunnleggende kunnskapen om OOP foretrekkes for å forstå formålet og bruken av super() metode. En av de viktigste egenskapene til OOP er Arv. En ny klasse kan opprettes ved å arve en annen klasses funksjoner, og den kalles arv. Her kalles den nye klassen underklasse eller barneklasse, og en annen klasse kalles superklasse eller foreldreklasse. Super () funksjonen brukes i barneklassen for å referere til foreldreklassen og få tilgang til alle foreldreklassevariablene og metodene. Denne funksjonen gjør arven mer håndterlig. Hvordan denne funksjonen kan brukes i Python har vist i denne veiledningen.

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

Når en barneklasse opprettes ved å arve en foreldreklasse, kalles den enkelt arv. Bruken av super() funksjon i enkelt arv har vist i følgende skript. Bok er overordnet klasse her som inneholder en konstruktormetode for å initialisere dataene, bookType () metode for å skrive ut boktypen, og rabatt() metoden for å vise rabatttilbudet er tilgjengelig eller ikke. Eng_book er barneklassen her som inneholder en konstruktormetode der super() funksjonen brukes til å ringe konstruktøren til foreldreklassen. Barneklassen har en annen metode som heter display_details () for å skrive ut detaljert informasjon om boka. Objektene til både foreldre- og barneklasser er opprettet senere for å kalle klassens forskjellige metoder.

# Definer foreldreklassen
class Book:
# 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:
print ("% s er en% s bok."% (selv.tittel, 'Engineering'))
hvis selv.type == 2:
print ("% s er en% s bok."% (selvtillit.tittel, 'medisinsk'))
hvis selv.type == 3:
print ("% s er en% s bok."% (selv.tittel, 'Finans'))
# Definer funksjonen for å vise rabatttilbudet
def rabatt (selv):
hvis selv.tilbud == Sant:
print ("Boken har rabatttilbud.")
ellers:
utskrift ("Boken har ikke noe rabattilbud.")
# Definer barneklassen
class 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 = selvtillit.pris - selv.pris * 0.15
print ("Book Name:% s"% self.tittel)
skriv ut ("Forfatternavn:% s"% selv.forfatter)
utskrift ("Pris:% 0.2f "% selv.pris)
utskrift ("Bruker foreldreklasse:")
# Definer objektet til foreldreklassen
objbook = Book ('Medical Microbiology', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, falsk)
# Ring funksjon for å vise boktype
objbook.bookType ()
# Ring funksjon for å vise rabatt tilbud
objbook.rabatt()
skriv ut ("\ nBruk barneklasse:")
# Definer objektet til barneklassen
objEngBook = Eng_book ('Engineering Mathematics', 'H K Dass', 1, True, 50)
# Ringfunksjon for å vise bokdetaljer
objEngBook.display_details ()

Produksjon:

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

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 arvinger er vist i følgende skript. Avdeling er overordnet klasse som inneholder en konstruktormetode for å initialisere variablene og vise() metode for å skrive ut avdelingsnavnet. Kurs er barneklassen arvet fra Avdeling klasse, og den inneholder en konstruktormetode og display_Course_info () metode for å vise kursets detaljer. Lærere er barneklassen arvet fra Avdeling klasse, og den inneholder en konstruktormetode og display_Teacher_info () metode for å vise lærerens detaljer. Lærer_Kurs er den siste barneklassen i skriptet som er definert ved å arve begge deler Kurs og Lærere klasser. Objektene til de tre barneklassene er opprettet på slutten av skriptet for å få tilgang til klassens forskjellige metoder. De super() funksjonen har blitt brukt inne i konstruktormetoden i alle barneklasser for å ringe foreldreklassens konstruktør. Fire argumentverdier kreves for å opprette underordnet klasseobjekt fordi avdelingsklassens konstruksjon inneholder fire argumenter.

# Definer foreldreklasse
klasse Avdeling ():
def __init __ (selv, avd. navn, totalt kurs, total kreditt, total lærere):
selv-.avd. navn = avd. navn
selv-.total_courses = total_courses
selv-.total_kreditt = total_kreditt
selv-.total_lærere = total_lærere
def display (selv):
skriv ut ("Avdelingsnavn:% s"% selv.avd. navn)
# Definer første barneklasse
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):
utskrift ("Totalt kurs:% d"% selv.totalt_kurs)
utskrift ("Totalt studiepoeng:% d"% selv.total_kreditt)
# Definer den andre barneklassen
klasse lærere (avdeling):
def __init __ (selv, navn, kurs, studiepoeng, lærere):
# Ring foreldreklassekonstruktør
super().__init __ (navn, kurs, studiepoeng, lærere)
def display_Teacher_info (selv):
utskrift ("Total Teachers:% d"% self.total_lærere)
# Definer den tredje barneklassen som er arvet fra to klasser
class Teacher_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 ()
utskrift ("Bruk av første barneklasse")
objCourses = Kurs ('CSE', 72, 150, 50)
objCourses.vise()
objCourses.display_Course_info ()
skriv ut ("\ nBruk andre barneklasse")
objTeachers = Lærere ('BBA', 65, 140, 55)
objTeachers.vise()
objTeachers.display_Teacher_info ()
skriv ut ("\ nBruker den tredje underordnede klassen arvet fra flere klasser")
objDCT = Teacher_Course ('engelsk', 60, 122, 20)
objDCT.display_details ()

Produksjon:

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

Konklusjon:

De super() funksjonen kan bare brukes i barneklassen for å ringe konstruktøren og andre foreldreklassemetoder. Bruken av denne funksjonen er vist i denne opplæringen ved å lage enkelt- og flernivåarv. Jeg håper formålet med å bruke denne funksjonen i OOP vil bli ryddet etter å ha lest denne veiledningen.

Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...
Unity3D opplæring
Introduksjon til Unity 3D Unity 3D er en kraftig spillutviklingsmotor. Det er kryssplattform, det er det lar deg lage spill for mobil, web, stasjonær ...