Python

Pythonová super () funkcia

Pythonová super () funkcia
Skript v jazyku Python umožňuje štruktúrované programovanie aj objektovo orientované programovanie (OOP). Super () je vstavaná funkcia OOP v jazyku Python. Základné znalosti OOP sa uprednostňujú na pochopenie účelu a použitia protokolu OOP Super() metóda. Jednou z dôležitých vlastností OOP je dedičnosť. Novú triedu možno vytvoriť dedením funkcií inej triedy a nazýva sa to Dedičnosť. Tu sa nová trieda nazýva podtrieda alebo podradená trieda a iná trieda sa nazýva nadtrieda alebo nadradená trieda. Super () Funkcia sa používa v podradenej triede na odkazovanie na nadradenú triedu a prístup ku všetkým premenným a metódam nadradenej triedy. Vďaka tejto funkcii je dedičstvo lepšie zvládnuteľné. Ako sa dá táto funkcia použiť v Pythone, ukázalo sa v tomto výučbe.

Príklad-1: Použitie funkcie super () v jednoduchej dedičnosti

Keď sa podradená trieda vytvorí dedením po nadradenej triede, nazýva sa to jednoduchá dedičnosť. Používanie Super() funkcia v jednej dedičnosti sa ukázala v nasledujúcom skripte. Kniha je tu nadradená trieda, ktorá obsahuje metódu konštruktora na inicializáciu údajov, bookType () - spôsob tlače typu knihy a - zľava () spôsob zobrazenia zľavovej ponuky je alebo nie je k dispozícii. Eng_book je tu podradená trieda, ktorá obsahuje metódu konštruktora, kde Super() funkcia sa používa na volanie konštruktora nadradenej triedy. Podradená trieda má inú pomenovanú metódu display_details () vytlačiť podrobné informácie o knihe. Objekty rodičovských aj podradených tried boli vytvorené neskôr, aby zavolali rôzne metódy tried.

# Definujte nadradenú triedu
triedna kniha:
# Definujte konštruktor
def __init __ (ja, titul, autor, typ, ponuka):
ja.titul = titul
ja.autor = autor
ja.typ = typ
ja.offer = ponuka
# Definujte funkciu na zobrazenie typu knihy
def bookType (vlastný):
ak ja.typ == 1:
print ("% s je kniha% s."% (vlastné.názov „Inžiniering“))
ak ja.typ == 2:
print ("% s je kniha% s."% (vlastné.názov „Lekárske“))
ak ja.typ == 3:
print ("% s je kniha% s."% (vlastné.názov „Financie“))
# Definujte funkciu na zobrazenie zľavovej ponuky
def zľava (vlastná):
ak ja.offer == Pravda:
tlač („Kniha má zľavovú ponuku.„)
inak:
tlač („Kniha nemá zľavovú ponuku.„)
# Definujte triedu dieťaťa
trieda Eng_book (kniha):
# Definujte konštruktor
def __init __ (ja, titul, autor, typ, ponuka, cena):
Super().__init __ (názov, autor, typ, ponuka)
ja.cena = cena
# Definujte funkciu na zobrazenie podrobností knihy
def display_details (self):
Super().zľava ()
ak ja.offer == Pravda:
ja.cena = ja.cena - ja.cena * 0.15
print ("Názov knihy:% s"% self.názov)
print ("Meno autora:% s"% seba.autor)
print („Cena:% 0.2f "% seba.cena)
print ("Používanie nadradenej triedy:")
# Definujte objekt nadradenej triedy
objbook = Kniha („Lekárska mikrobiológia“, „Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, False)
# Volacia funkcia na zobrazenie typu knihy
objbook.bookType ()
# Volacia funkcia na zobrazenie zľavovej ponuky
objbook.zľava ()
print ("\ nPoužívanie podradenej triedy:")
# Definujte objekt podradenej triedy
objEngBook = Eng_book ('Engineering Mathematics', 'H K Dass', 1, True, 50)
# Volacia funkcia pre zobrazenie detailov knihy
objEngBook.display_details ()

Výkon:

Po vykonaní vyššie uvedeného skriptu sa zobrazí nasledujúci výstup. Prvý výstup sa vygeneroval pomocou objektu nadradenej triedy a druhý výstup sa vygeneroval pomocou objektu podradenej triedy.

Príklad 2: Použitie funkcie super () vo viacerých dedičstvách

Keď sa nová trieda vygeneruje dedením viacerých tried, tento typ dedenia sa nazýva viacnásobné dedičstvo. Použitie funkcie super () vo viacerých dedičstvách sa ukázalo v nasledujúcom skripte. Oddelenie je nadradená trieda, ktorá obsahuje metódu konštruktora na inicializáciu premenných a display () metóda na vytlačenie názvu oddelenia. Kurzy sú triedou detí zdedenou z Oddelenie triedy a obsahuje metódu konštruktora a display_Course_info () metóda na zobrazenie podrobností o kurze. Učitelia sú triedou detí zdedenou z Oddelenie triedy a obsahuje metódu konštruktora a display_Teacher_info () metóda na zobrazenie detailu učiteľa. Teacher_Course je posledná podradená trieda skriptu, ktorá bola definovaná dedením oboch Kurzy a Učitelia triedy. Objekty troch podradených tried boli vytvorené na konci skriptu, aby umožnili prístup k rôznym metódam tried. The Super() funkcia bola použitá vo vnútri metódy konštruktora všetkých podradených tried na volanie konštruktora nadradenej triedy. Na vytvorenie objektu podradenej triedy sú potrebné štyri hodnoty argumentov, pretože konštrukt triedy Department obsahuje štyri argumenty.

# Definujte nadradenú triedu
oddelenie triedy ():
def __init __ (self, dept_name, total_courses, total_credit, total_teachers):
ja.dept_name = dept_name
ja.total_courses = total_courses
ja.total_credit = total_credit
ja.total_teachers = total_teachers
zobrazenie def (samo):
print ("Názov oddelenia:% s"% seba.dept_name)
# Definujte prvú podradenú triedu
kurzy (oddelenie):
def __init __ (ja, meno, kurzy, kredity, učitelia):
# Zavolajte konštruktora rodičovskej triedy
Super().__init __ (meno, kurzy, kredity, učitelia)
def display_Course_info (self):
print ("Celkový počet kurzov:% d"% sám.total_courses)
print ("Celkový počet kreditov:% d"% sám.celkový_úver)
# Definujte druhú podradenú triedu
triedni učitelia (katedra):
def __init __ (ja, meno, kurzy, kredity, učitelia):
# Zavolajte konštruktora nadradenej triedy
Super().__init __ (meno, kurzy, kredity, učitelia)
def display_Teacher_info (vlastné):
print ("Celkový počet učiteľov:% d"% seba.celkom_učitelia)
# Definujte tretiu podradenú triedu zdedenú z dvoch tried
trieda Teacher_Course (kurzy, učitelia):
def __init __ (ja, meno, kurzy, kredity, učitelia):
# Zavolajte konštruktora nadradenej triedy
Super().__init __ (meno, kurzy, kredity, učitelia)
def display_details (self):
Super().display ()
Super().display_Course_info ()
Super().display_Teacher_info ()
print ("Používanie prvej podradenej triedy")
objCourses = Courses ('CSE', 72, 150, 50)
objCourses.display ()
objCourses.display_Course_info ()
print ("\ nPoužitie druhej podradenej triedy")
objTeachers = učitelia ('BBA', 65, 140, 55)
objTeachers.display ()
objTeachers.display_Teacher_info ()
print ("\ nPoužitie tretej podradenej triedy zdedenej z viacerých tried")
objDCT = Teacher_Course ('anglicky', 60, 122, 20)
objDCT.display_details ()

Výkon:

Po vykonaní vyššie uvedeného skriptu sa zobrazí nasledujúci výstup. Vytvorením objektov troch podradených tried sa tu vygenerovali tri výstupy.

Záver:

The Super() Túto funkciu je možné použiť iba vo vnútri podradenej triedy na volanie konštruktora a akejkoľvek inej metódy nadradenej triedy. Použitie tejto funkcie bolo v tejto príručke ukázané vytvorením jedno a viacúrovňového dedičstva. Dúfam, že účel použitia tejto funkcie v OOP bude objasnený po prečítaní tohto tutoriálu.

Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z najpopulárnejších obchodných simulačných hier. V tejto hre musíte vytvoriť úžasné dopravné podnikanie. Začnete však na začiatku ok...
Hry SuperTuxKart pre Linux
SuperTuxKart pre Linux
SuperTuxKart je vynikajúci titul navrhnutý tak, aby vám priniesol zážitok z hry Mario Kart zadarmo na vašom systéme Linux. Je to dosť náročné a zábavn...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
Battle for Wesnoth je jednou z najpopulárnejších open source strategických hier, ktoré si v súčasnosti môžete zahrať. Táto hra bola nielen vyvinutá ve...