Python

Python super () funkcija

Python super () funkcija
Skript Python lahko izvaja strukturirano programiranje in objektno usmerjeno programiranje (OOP). Super () je vgrajena Pythonova funkcija OOP. Osnovno znanje OOP je prednostno za razumevanje namena in uporabe super () metoda. Ena od pomembnih lastnosti OOP je dedovanje. Nov razred lahko ustvarite z dedovanjem funkcij drugega razreda in se imenuje Dedovanje. Tu se novi razred imenuje podrazred ali podrejeni razred, drugi razred pa superklasa ali nadrejeni razred. Super () Funkcija se v podrejenem razredu uporablja za sklicevanje na nadrejeni razred in dostop do vseh spremenljivk in metod nadrejenega razreda. Ta funkcija naredi dedovanje bolj obvladljivo. Kako je to funkcijo mogoče uporabiti v Pythonu, je prikazano v tej vadnici.

Primer-1: Uporaba funkcije super () pri posamezni dedovanju

Ko se podrejeni razred ustvari z dedovanjem nadrejenega razreda, se imenuje enojno dedovanje. Uporaba super () funkcija v enem nasledstvu je prikazana v naslednjem skriptu. Knjiga je tu nadrejeni razred, ki vsebuje konstruktorsko metodo za inicializacijo podatkov, bookType () način tiskanja vrste knjige in popust () način prikaza ponudbe s popustom je na voljo ali ne. Eng_book je podrejeni razred tukaj, ki vsebuje konstruktorsko metodo, kjer je super () funkcija se uporablja za klic konstruktorja nadrejenega razreda. Otroški razred ima drugo ime display_details () za tiskanje podrobnih informacij o knjigi. Predmeti nadrejenega in podrejenega razreda so bili ustvarjeni pozneje, da so poklicali različne metode razredov.

# Določite nadrejeni razred
razred Knjiga:
# Določite konstruktor
def __init __ (jaz, naslov, avtor, vrsta, ponudba):
sebe.naslov = naslov
sebe.avtor = avtor
sebe.vrsta = vrsta
sebe.ponudba = ponudba
# Določite funkcijo za prikaz vrste knjige
def bookType (self):
če jaz.vrsta == 1:
print ("% s je knjiga% s."% (samo.naslov, "Inženiring"))
če jaz.vrsta == 2:
print ("% s je knjiga% s."% (samo.naslov, "Medicinski"))
če jaz.vrsta == 3:
print ("% s je knjiga% s."% (samo.naslov, "Finance"))
# Določite funkcijo za prikaz ponudbe s popustom
def popust (samo):
če jaz.ponudba == True:
print ("Knjiga ima popust.")
sicer:
print ("Knjiga nima popusta.")
# Določite podrejeni razred
razred Eng_book (knjiga):
# Določite konstruktor
def __init __ (lastno ime, naslov, avtor, vrsta, ponudba, cena):
super ().__init __ (naslov, avtor, vrsta, ponudba)
sebe.cena = cena
# Določite funkcijo za prikaz podrobnosti o knjigi
def display_details (self):
super ().popust ()
če jaz.ponudba == True:
sebe.cena = samo.cena - samo.cena * 0.15
print ("Ime knjige:% s"% self.naslov)
print ("Ime avtorja:% s"% self.avtor)
print ("Cena:% 0.2f "% samozaposlene.cena)
print ("Uporaba nadrejenega razreda:")
# Določite objekt nadrejenega razreda
objbook = Knjiga ('Medicinska mikrobiologija', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, False)
# Funkcija klica za prikaz vrste knjige
objbook.bookType ()
# Funkcija klica za prikaz ponudbe s popustom
objbook.popust ()
print ("\ nUporaba otroškega razreda:")
# Določite objekt podrejenega razreda
objEngBook = Eng_book ('Inženirska matematika', 'H K Dass', 1, True, 50)
# Funkcija klica za prikaz podrobnosti o knjigi
objEngBook.display_details ()

Izhod:

Naslednji izhod se bo prikazal po izvedbi zgornjega skripta. Prvi izhod je ustvaril z uporabo predmeta nadrejenega razreda, drugi izhod pa z uporabo predmeta podrejenega razreda.

Primer-2: Uporaba funkcije super () v več dedovanjih

Ko se generira nov razred z dedovanjem več razredov, se ta vrsta dedovanja imenuje več dediščin. Uporaba funkcije super () v več dedovanjih je prikazana v naslednjem skriptu. Oddelek je nadrejeni razred, ki vsebuje konstruktorsko metodo za inicializacijo spremenljivk in zaslon () metoda za tiskanje imena oddelka. Tečaji so podrejeni razred, podedovan po Oddelek razred, vsebuje pa konstruktorsko metodo in display_Course_info () metoda za prikaz podrobnosti tečaja. Učitelji so podrejeni razred, podedovan po Oddelek razred, vsebuje pa konstruktorsko metodo in display_Teacher_info () metoda za prikaz podrobnosti učitelja. Tečaj učitelja je zadnji podrejeni razred skripta, ki je bil definiran z dedovanjem obeh Tečaji in Učitelji razredih. Predmeti treh podrejenih razredov so bili ustvarjeni na koncu skripta za dostop do različnih metod razredov. The super () funkcija je bila uporabljena znotraj metode konstruktorja vseh podrejenih razredov za klicanje konstruktorja nadrejenega razreda. Za izdelavo predmeta podrejenega razreda so potrebne štiri vrednosti argumentov, ker konstrukcija razreda oddelka vsebuje štiri argumente.

# Določite razred staršev
razred Oddelek ():
def __init __ (self, ime oddelka, total_predmeti, total_credit, total_učitelji):
sebe.dept_name = ime_dept
sebe.total_courses = total_courses
sebe.total_credit = total_credit
sebe.total_učitelji = total_učitelji
def prikaz (samo):
print ("Ime oddelka:% s"% self.ime_dept)
# Določite prvi podrejeni razred
tečaji (oddelek):
def __init __ (jaz, ime, tečaji, krediti, učitelji):
# Pokliči konstruktor nadrejenega razreda
super ().__init __ (ime, tečaji, krediti, učitelji)
def display_Course_info (self):
natisni ("Skupaj tečajev:% d"% samo.total_courses)
print ("Skupno število zaslug:% d"% samozaposlitev.skupno_kredit)
# Določite drugi podrejeni razred
razredni učitelji (oddelek):
def __init __ (jaz, ime, tečaji, krediti, učitelji):
# Pokliči konstruktor nadrejenega razreda
super ().__init __ (ime, tečaji, krediti, učitelji)
def display_Teacher_info (self):
print ("Skupaj učiteljev:% d"% samo.skupaj_učiteljev)
# Določite tretji podrejeni razred, podedovan iz dveh razredov
razred Teacher_Course (Tečaji, učitelji):
def __init __ (jaz, ime, tečaji, krediti, učitelji):
# Pokličite konstruktor nadrejenega razreda
super ().__init __ (ime, tečaji, krediti, učitelji)
def display_details (self):
super ().zaslon ()
super ().display_Course_info ()
super ().display_Teacher_info ()
print ("Uporaba prvega podrejenega razreda")
objCourses = Tečaji ('CSE', 72, 150, 50)
objCourses.zaslon ()
objCourses.display_Course_info ()
print ("\ nUporaba drugega podrejenega razreda")
objTeachers = Učitelji ('BBA', 65, 140, 55)
objTeachers.zaslon ()
objTeachers.display_Teacher_info ()
print ("\ nUporaba tretjega podrejenega razreda, podedovanega iz več razredov")
objDCT = Tečaj učitelja ('angleščina', 60, 122, 20)
objDCT.display_details ()

Izhod:

Naslednji izhod se bo prikazal po izvedbi zgornjega skripta. Tu so bili ustvarjeni trije izhodi z ustvarjanjem predmetov treh podrejenih razredov.

Zaključek:

The super () Funkcija se lahko uporablja samo v podrejenem razredu za klic konstruktorja in katere koli druge metode nadrejenega razreda. Uporaba te funkcije je bila prikazana v tej vadnici z ustvarjanjem enostranske in večstopenjske dediščine. Upam, da bo namen uporabe te funkcije v OOP po branju te vadnice odstranjen.

OpenTTD vs Simutrans
Ustvarjanje lastne simulacije prevoza je lahko zabavno, sproščujoče in izjemno vabljivo. Zato morate preizkusiti čim več iger, da boste našli tisto, k...
Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...
SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...