Python

Pythoni super () funktsioon

Pythoni super () funktsioon
Pythoni skript saab teha nii struktureeritud programmeerimist kui ka objektile orienteeritud programmeerimist (OOP). Super () on OOP sisseehitatud Pythoni funktsioon. OOP-i eesmärgi ja kasutamise mõistmiseks eelistatakse põhiteadmisi OOP-st Super() meetod. Üks OOP olulistest tunnustest on pärimine. Uue klassi saab luua pärides teise klassi tunnused ja seda nimetatakse pärandiks. Siin nimetatakse uut klassi alaklassiks või lasteklassiks ja teist klassi superklassiks või vanemateklassiks. Super () Funktsiooni kasutatakse lapseklassis vanemaklassi viitamiseks ja kõigi vanemaklassi muutujate ning meetodite kasutamiseks. See funktsioon muudab pärandi paremini hallatavaks. Kuidas seda funktsiooni Pythonis kasutada saab, on selles õpetuses näidatud.

Näide 1: Funktsiooni super () kasutamine ühe pärandina

Kui lapseklass luuakse vanemaklassi pärimise kaudu, siis nimetatakse seda üksikpärandiks. Kasutamine Super() funktsioon ühes pärandis on näidatud järgmises skriptis. Raamat on siin vanemklass, mis sisaldab konstruktori meetodit andmete initsialiseerimiseks, bookType () - raamatu tüübi printimise meetod ja allahindlus () Sooduspakkumise kuvamise meetod on saadaval või mitte. Eng_book on siinne lasteklass, mis sisaldab konstruktori meetodit, kus Super() funktsiooni kasutatakse vanema klassi konstruktori kutsumiseks. Lasteklassis on veel üks nimega meetod kuva_detailid () raamatu üksikasjaliku teabe printimiseks. Nii vanemate kui ka laste klasside objektid on loodud hiljem, et nimetada klasside erinevaid meetodeid.

# Määratlege vanemklass
klassi raamat:
# Defineerige konstruktor
def __init __ (mina, pealkiri, autor, tüüp, pakkumine):
ise.pealkiri = pealkiri
ise.autor = autor
ise.tüüp = tüüp
ise.pakkumine = pakkumine
# Määratlege raamatutüübi kuvamise funktsioon
def bookType (ise):
kui ise.tüüp == 1:
print ("% s on% s raamat."% (ise.nimetus, "Inseneritöö"))
kui ise.tüüp == 2:
print ("% s on% s raamat."% (ise.nimetus, "meditsiiniline"))
kui ise.tüüp == 3:
print ("% s on% s raamat."% (ise.pealkiri, "rahandus"))
# Määratlege allahindluse pakkumise kuvamise funktsioon
def allahindlus (ise):
kui ise.pakkumine == Tõsi:
print ("Raamatul on sooduspakkumine.")
muu:
print ("Raamatul pole allahindluspakkumist.")
# Määratlege lasteklass
klass Eng_book (raamat):
# Defineerige konstruktor
def __init __ (ise, pealkiri, autor, tüüp, pakkumine, hind):
Super().__init __ (pealkiri, autor, tüüp, pakkumine)
ise.hind = hind
# Määratlege raamatu üksikasjade kuvamise funktsioon
def display_details (ise):
Super().allahindlus ()
kui ise.pakkumine == Tõsi:
ise.hind = ise.hind - ise.hind * 0.15
print ("Raamatu nimi:% s"% ise.pealkiri)
print ("Autori nimi:% s"% ise.autor)
print ("Hind:% 0.2f "% ise.hind)
print ("Vanemklassi kasutamine:")
# Määratlege vanema klassi objekt
objektiraamat = Book ("meditsiiniline mikrobioloogia", "Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, vale)
# Helistamisfunktsioon raamatu tüübi kuvamiseks
objektiraamat.bookType ()
# Helistamisfunktsioon sooduspakkumise kuvamiseks
objektiraamat.allahindlus ()
print ("\ nLasteklassi kasutamine:")
# Määratlege alamklassi objekt
objEngBook = Eng_book ('Insenermatemaatika', 'H K Dass', 1, tõsi, 50)
# Kõne funktsioon raamatu üksikasjade kuvamiseks
eesmärkRaamat.kuva_detailid ()

Väljund:

Pärast ülaltoodud skripti käivitamist ilmub järgmine väljund. Esimene väljund on loodud vanema klassi objekti abil ja teine ​​väljund on loodud alamklassi objekti abil.

Näide 2: Funktsiooni super () kasutamine mitme pärandi korral

Kui uus klass luuakse mitme klassi pärimise teel, nimetatakse seda tüüpi pärandit mitmeks pärandiks. Funktsiooni super () kasutamine mitme pärandi korral on näidatud järgmises skriptis. Osakond on algklass, mis sisaldab konstruktorite meetodit muutujate ja kuva () osakonna nime printimise meetod. Kursused on päritud lasteklass Osakond klass ning see sisaldab konstruktori meetodit ja display_Course_info () meetod kursuse detailide kuvamiseks. Õpetajad on päritud lasteklass Osakond klass ning see sisaldab konstruktori meetodit ja display_Teacher_info () meetod õpetaja detailide kuvamiseks. Õpetaja_kursus on skripti viimane lapseklass, mis on määratletud mõlema pärimisega Kursused ja Õpetajad klassides. Kolme lapseklassi objektid on loodud skripti lõppu, et pääseda juurde klasside erinevatele meetoditele. The Super() funktsiooni on kasutatud kõigi lapseklasside konstruktorimeetodis vanemklassi konstruktori kutsumiseks. Alamklassi objekti loomiseks on vaja nelja argumenti väärtust, kuna osakonna klassi konstruktsioon sisaldab nelja argumenti.

# Määratlege vanemate klass
klassi osakond ():
def __init __ (ise, osakonna nimi, kokku_kursused, kogu_krediit, kokku_õpetajad):
ise.osakonna_nimi = osakonna_nimi
ise.kokku_kursused = kokku-kursused
ise.kogu_krediit = kogu_krediit
ise.kokku_õpetajad = kokku_õpetajad
def kuva (ise):
print ("Osakonna nimi:% s"% ise.osakonna nimi)
# Määratlege esimene lapseklass
klassi kursused (osakond):
def __init __ (mina, nimi, kursused, ainepunktid, õpetajad):
# Kõne vanema klassi konstruktorile
Super().__init __ (nimi, kursused, ainepunktid, õpetajad)
def display_Course_info (ise):
print ("Kursusi kokku:% d"% ise.kursused kokku)
print ("Krediitide koguarv:% d"% ise.kogu_krediit)
# Määratlege teine ​​lapseklass
klassijuhatajad (osakond):
def __init __ (mina, nimi, kursused, ainepunktid, õpetajad):
# Kõne vanema klassi konstruktorile
Super().__init __ (nimi, kursused, ainepunktid, õpetajad)
def display_Teacher_info (ise):
print ("Õpetajaid kokku:% d"% ise.kokku_õpetajad)
# Määratlege kahest klassist päritud kolmas lapseklass
klassi õpetajakursus (kursused, õpetajad):
def __init __ (mina, nimi, kursused, ainepunktid, õpetajad):
# Helistage vanema klassi konstruktorile
Super().__init __ (nimi, kursused, ainepunktid, õpetajad)
def display_details (ise):
Super().kuva ()
Super().display_Course_info ()
Super().display_Teacher_info ()
print ("Esimese lapseklassi kasutamine")
objCourses = Kursused ('CSE', 72, 150, 50)
objKursused.kuva ()
objKursused.display_Course_info ()
print ("\ nTeise lapseklassi kasutamine")
objTeachers = õpetajad (BBA, 65, 140, 55)
objÕpetajad.kuva ()
objÕpetajad.display_Teacher_info ()
print ("\ nKolmelt klassilt päritud kolmanda alamklassi kasutamine")
objDCT = Teacher_Course (inglise keel, 60, 122, 20)
objDCT.kuva_detailid ()

Väljund:

Pärast ülaltoodud skripti käivitamist ilmub järgmine väljund. Kolme lapseklassi objektide loomisega on siin loodud kolm väljundit.

Järeldus:

The Super() funktsiooni saab kasutada ainult lasteklassis konstruktori ja mis tahes muu vanemklassi meetodi kutsumiseks. Selle funktsiooni kasutusviise on selles õpetuses näidatud, luues ühe- ja mitmetasandilise pärandi. Loodan, et selle funktsiooni OOP-s kasutamise eesmärk kustutatakse pärast selle õpetuse lugemist.

Kuidas installida ja mängida Doomi Linuxis
Doomi sissejuhatus Doom-seeria sai alguse 90ndatel pärast algse Doomi väljaandmist. See oli kohene hitt ja sellest ajast alates on mänguseeria pälvinu...
Vulkan Linuxi kasutajatele
Iga uue põlvkonna graafikakaartidega näeme, et mängude arendajad ületavad graafilise truuduse piire ja jõuavad fotorealismile ühe sammu lähemale. Kuid...
OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...