Piton

Python super () funkcija

Python super () funkcija
Python skripta može raditi i strukturirano programiranje i objektno orijentirano programiranje (OOP). Super () je ugrađena Python funkcija OOP-a. Poželjno je osnovno znanje o OOP-u radi razumijevanja svrhe i upotrebe super() metoda. Jedna od važnih značajki OOP-a je nasljeđivanje. Nova klasa može se stvoriti nasljeđivanjem značajki druge klase, a naziva se nasljeđivanje. Ovdje se nova klasa naziva podrazred ili podređena klasa, a druga klasa naziva se superklasa ili roditeljska klasa. Super () funkcija se koristi u podređenoj klasi za upućivanje na roditeljsku klasu i pristup svim varijablama i metodama nadređene klase. Ova funkcija čini nasljedstvo lakšim za upravljanje. Kako se ova funkcija može koristiti u Pythonu, pokazalo je ovo uputstvo.

Primjer-1: Upotreba funkcije super () u pojedinačnom nasljeđivanju

Kada se podređena klasa stvori nasljeđivanjem roditeljske klase, tada se naziva jedno nasljeđivanje. Korištenje super() funkcija u jednom nasljeđivanju prikazana je u sljedećoj skripti. Knjiga je ovdje roditeljska klasa koja sadrži metodu konstruktora za inicijalizaciju podataka, vrsta knjige () način ispisa vrste knjige i popust() Način prikazivanja ponude s popustom dostupan je ili nije. Eng_book je ovdje podređena klasa koja sadrži metodu konstruktora gdje je super() funkcija se koristi za pozivanje konstruktora roditeljske klase. Dijete klasa ima drugu metodu imenovanu display_details () za ispis detaljnih podataka o knjizi. Objekti roditeljske i podređene klase stvoreni su kasnije kako bi se pozvale različite metode klasa.

# Definirajte roditeljsku klasu
knjiga knjige:
# Definirajte konstruktor
def __init __ (ja, naslov, autor, vrsta, ponuda):
sebe.naslov = naslov
sebe.autor = autor
sebe.vrsta = vrsta
sebe.ponuda = ponuda
# Definirajte funkciju za prikaz vrste knjige
def bookType (self):
ako ja.vrsta == 1:
print ("% s je knjiga% s."% (samo.naslov, "Inženjering"))
ako ja.vrsta == 2:
print ("% s je knjiga% s."% (samo.naslov, "Medicinski"))
ako ja.vrsta == 3:
print ("% s je knjiga% s."% (samo.naslov, 'Financije'))
# Definirajte funkciju za prikaz popusta
def popust (samo):
ako ja.ponuda == Tačno:
print ("Knjiga ima popust.")
drugo:
print ("Knjiga nema popust.")
# Definirajte podređeni razred
razred Eng_book (Knjiga):
# Definirajte konstruktor
def __init __ (samo, naslov, autor, vrsta, ponuda, cijena):
super().__init __ (naslov, autor, vrsta, ponuda)
sebe.cijena = cijena
# Definirajte funkciju za prikaz detalja o knjizi
def display_details (self):
super().popust()
ako ja.ponuda == Tačno:
sebe.cijena = samo.cijena - samo.cijena * 0.15
print ("Naziv knjige:% s"% self.titula)
print ("Ime autora:% s"% self.Autor)
print ("Cijena:% 0.2f "% sebe.cijena)
print ("Upotreba roditeljske klase:")
# Definirajte objekt roditeljske klase
objbook = Knjiga ('Medicinska mikrobiologija', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, False)
# Funkcija poziva za prikaz vrste knjige
objbook.vrsta knjige ()
# Funkcija poziva za prikaz popusta
objbook.popust()
print ("\ nKorištenje podređene klase:")
# Definirajte objekt podređene klase
objEngBook = Eng_book ('Inženjerska matematika', 'H K Dass', 1, True, 50)
# Funkcija poziva za prikaz detalja o knjizi
objEngBook.display_details ()

Izlaz:

Sljedeći će se izlaz pojaviti nakon izvršavanja gornje skripte. Prvi izlaz generiran je pomoću objekta roditeljske klase, a drugi izlaz generiran je korištenjem objekta podređene klase.

Primjer-2: Upotreba funkcije super () u više nasljeđa

Kada se generira nova klasa nasljeđivanjem više klasa, ova vrsta nasljeđivanja naziva se više nasljeđivanja. Upotreba funkcije super () u više nasljeđa prikazana je u sljedećoj skripti. Odjel je roditeljska klasa koja sadrži metodu konstruktora za inicijalizaciju varijabli i prikaz() metoda za ispis naziva odjela. Tečajevi jesu li podređena klasa naslijeđena iz Odjel klase, a sadrži metodu konstruktora i display_Course_info () metoda za prikaz detalja o tečaju. Učitelji jesu li podređena klasa naslijeđena iz Odjel klase, a sadrži metodu konstruktora i display_Teacher_info () metoda za prikaz nastavnikovih detalja. Tečaj učitelja je zadnja podređena klasa skripte koja je definirana nasljeđivanjem obje Tečajevi i Učitelji razreda. Objekti triju podređenih klasa stvoreni su na kraju skripte za pristup različitim metodama klasa. The super() funkcija korištena je unutar metode konstruktora svih podređenih klasa za pozivanje konstruktora roditeljske klase. Četiri vrijednosti argumenata potrebne su za stvaranje objekta podređene klase jer konstrukcija klase Odjela sadrži četiri argumenta.

# Definirajte razred roditelja
razredni odjel ():
def __init __ (self, ime odsjeka, ukupno_kurs, total_kredit, ukupno_nastavnika):
sebe.ime_dept = ime_dept
sebe.total_courses = total_courses
sebe.ukupno_kredit = ukupno_kredit
sebe.ukupno_nastavnika = ukupno_nastavnika
def prikaz (samo):
print ("Naziv odjela:% s"% self.naziv_depta)
# Definirajte prvi podređeni razred
tečajevi (odjel):
def __init __ (ja, ime, tečajevi, bodovi, nastavnici):
# Pozovite konstruktor roditeljske klase
super().__init __ (ime, tečajevi, bodovi, nastavnici)
def display_Course_info (self):
print ("Ukupno tečajeva:% d"% samo.ukupni_predmeti)
print ("Ukupni bodovi:% d"% samo.ukupno_kredit)
# Definirajte drugi podređeni razred
razrednici (Odsjek):
def __init __ (ja, ime, tečajevi, bodovi, nastavnici):
# Pozovite konstruktor roditeljske klase
super().__init __ (ime, tečajevi, bodovi, nastavnici)
def display_Teacher_info (self):
print ("Ukupno nastavnika:% d"% samo.ukupno_učitelja)
# Definirajte treće dijete klase naslijeđeno iz dva razreda
razred Teacher_Course (Tečajevi, nastavnici):
def __init __ (ja, ime, tečajevi, bodovi, nastavnici):
# Pozovite konstruktor roditeljske klase
super().__init __ (ime, tečajevi, bodovi, nastavnici)
def display_details (self):
super().prikaz()
super().display_Course_info ()
super().display_Teacher_info ()
print ("Korištenje prve podređene klase")
objCourses = Tečajevi ('CSE', 72, 150, 50)
objCourses.prikaz()
objCourses.display_Course_info ()
print ("\ nKorištenje drugog podređenog razreda")
objTeachers = Nastavnici ('BBA', 65, 140, 55)
objUčitelji.prikaz()
objUčitelji.display_Teacher_info ()
print ("\ nKorištenje treće podređene klase naslijeđene iz više klasa")
objDCT = Tečaj učitelja ('Engleski', 60, 122, 20)
objDCT.display_details ()

Izlaz:

Sljedeći će se izlaz pojaviti nakon izvršavanja gornje skripte. Ovdje su generirana tri izlaza stvaranjem objekata tri podređene klase.

Zaključak:

The super() funkcija se može koristiti samo unutar podređene klase za pozivanje konstruktora i bilo koje druge metode roditeljske klase. Upotreba ove funkcije prikazana je u ovom vodiču stvaranjem nasljeđivanja u više razina. Nadam se da će svrha upotrebe ove funkcije u OOP-u biti razjašnjena nakon čitanja ovog vodiča.

Besplatni i otvoreni kodni pokretački programi za razvoj Linux igara
Ovaj će članak pokriti popis besplatnih i open source pokretačkih igara koje se mogu koristiti za razvoj 2D i 3D igara na Linuxu. Brojni su takvi moto...
Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...