Python

Python super () funkcija

Python super () funkcija
Python skripts var veikt gan strukturētu programmēšanu, gan uz objektu orientētu programmēšanu (OOP). Super () ir iebūvēta OOP Python funkcija. Priekšroka dodama OOP pamatzināšanām, lai izprastu OOP mērķi un lietojumu super () metodi. Viena no OOP svarīgām iezīmēm ir Mantošana. Jauna klase var tikt izveidota, mantojot citas klases pazīmes, un to sauc par mantojumu. Šeit jauno klasi sauc par apakšklasi vai bērnu klasi, bet citu klasi - par superklasi vai vecāku klasi. Super () funkcija tiek izmantota bērnu klasē, lai atsauktos uz vecāku klasi un piekļūtu visiem vecāku klases mainīgajiem un metodēm. Šī funkcija padara mantojumu vieglāk pārvaldāmu. Kā šo funkciju var izmantot Python, ir parādīts šajā apmācībā.

1. piemērs: funkcijas Super () izmantošana vienā mantojumā

Kad bērnu klase tiek izveidota, mantojot vecāku klasi, to sauc par vienotu mantojumu. Programmas izmantošana super () funkcija vienā mantojumā ir parādīta šādā skriptā. Grāmata ir vecāku klase šeit, kurā ir konstruktora metode datu inicializēšanai, bookType () metode grāmatas veida drukāšanai un atlaide () Atlaides piedāvājuma parādīšanas metode ir vai nav pieejama. Eng_grāmata ir bērnu klase šeit, kas satur konstruktora metodi, kur super () Funkcija tiek izmantota, lai izsauktu vecāku klases konstruktoru. Bērnu klasē ir vēl viena nosaukta metode display_details () izdrukāt detalizētu grāmatas informāciju. Gan vecāku, gan bērnu klases objekti ir izveidoti vēlāk, lai izsauktu klases dažādās metodes.

# Definējiet vecāku klasi
klases grāmata:
# Definējiet konstruktoru
def __init __ (pats, nosaukums, autors, tips, piedāvājums):
pats.nosaukums = nosaukums
pats.autors = autors
pats.tips = tips
pats.piedāvājums = piedāvājums
# Definējiet funkciju, lai parādītu grāmatas tipu
def bookType (pats):
ja pats.tips == 1:
drukāt ("% s ir% s grāmata."% (pats.nosaukums, “Inženierzinātnes”))
ja pats.tips == 2:
drukāt ("% s ir% s grāmata."% (pats.nosaukums, “Medicīniskā”))
ja pats.tips == 3:
drukāt ("% s ir% s grāmata."% (pats.nosaukums “Finanses”))
# Definējiet atlaižu piedāvājuma parādīšanas funkciju
def atlaide (pats):
ja pats.piedāvājums == True:
drukāt ("Grāmatai ir atlaides piedāvājums.")
cits:
drukāt ("Grāmatai nav atlaides piedāvājuma.")
# Definējiet bērnu klasi
klase Eng_book (grāmata):
# Definējiet konstruktoru
def __init __ (pats, nosaukums, autors, tips, piedāvājums, cena):
super ().__init __ (nosaukums, autors, tips, piedāvājums)
pats.cena = cena
# Definējiet funkciju, lai parādītu grāmatas informāciju
def display_details (pats):
super ().atlaide ()
ja pats.piedāvājums == True:
pats.cena = pats.cena - pats.cena * 0.15
drukāt ("Grāmatas nosaukums:% s"%.nosaukums)
drukāt ("Autora vārds:% s"%.autors)
drukāt ("Cena:% 0.2f "% sevis.cena)
drukāt ("Vecāku klases izmantošana:")
# Definējiet vecāku klases objektu
objbook = Book ('Medicīniskā mikrobioloģija', 'Ernests Jawetz, Edvards A. Adelbergs, Džozefs L. Melnick ', 2, False)
# Zvana funkcija, lai parādītu grāmatas tipu
objektu grāmata.bookType ()
# Zvana funkcija, lai parādītu atlaides piedāvājumu
objektu grāmata.atlaide ()
drukāt ("\ nIzmantojot bērnu klasi:")
# Definējiet bērnu klases objektu
objEngBook = Eng_book ('Inženiertehniskā matemātika', 'H K Dass', 1, True, 50)
# Zvana funkcija, lai parādītu grāmatas informāciju
objEngBook.display_details ()

Izeja:

Pēc iepriekš minētā skripta izpildes parādīsies šāda izeja. Pirmais izvads ir izveidots, izmantojot vecāku klases objektu, un otrais izvads ir izveidots, izmantojot pakārtotās klases objektu.

2. piemērs: Funkcijas super () izmantošana vairākos mantojumos

Ja tiek iegūta jauna klase, mantojot vairākas klases, šo mantojuma veidu sauc par vairākiem mantojumiem. Funkcijas super () izmantošana vairākos mantojumos ir parādīta šajā skriptā. nodaļa ir vecāku klase, kas satur konstruktora metodi, lai inicializētu mainīgos un displejs () metode nodaļas nosaukuma drukāšanai. Kursi ir bērnu klase, kas mantota no nodaļa klase, un tā satur konstruktora metodi un display_Course_info () metode kursa detaļu parādīšanai. Skolotāji ir bērnu klase, kas mantota no nodaļa klase, un tā satur konstruktora metodi un display_Teacher_info () metode, lai parādītu skolotāja detaļas. Skolotāja_kurss ir skripta pēdējā bērnu klase, kas definēta, pārmantojot abus Kursi un Skolotāji klases. Trīs bērnu klases objekti ir izveidoti skripta beigās, lai piekļūtu klašu dažādajām metodēm. The super () Funkcija ir izmantota visu bērnu klašu konstruktora metodē, lai izsauktu vecāku klases konstruktoru. Bērna klases objekta izveidei ir nepieciešamas četras argumentu vērtības, jo nodaļas klases konstrukcijā ir četri argumenti.

# Definējiet vecāku klasi
klases departaments ():
def __init __ (pats, nodaļas nosaukums, kopējie_kursi, kopējais_kredīts, kopējie_skolotāji):
pats.dept_name = dept_name
pats.kopējie_kursi = kopējie_kursi
pats.kopējais_kredīts = kopējais_kredīts
pats.kopējie_ skolotāji = kopējie_ skolotāji
def displejs (pats):
drukāt ("Nodaļas nosaukums:% s"%.dept_name)
# Definējiet pirmo bērnu klasi
klases kursi (departaments):
def __init __ (sevis, vārds, kursi, kredītpunkti, skolotāji):
# Zvaniet vecāku klases konstruktoram
super ().__init __ (vārds, kursi, kredītpunkti, skolotāji)
def display_Course_info (pats):
drukāt ("Kopējais kursu skaits:% d"% pats.kopējie_kursi)
drukāt ("Kopējais kredītu skaits:% d"% pats.kopējais_kredīts)
# Definējiet otro bērnu klasi
klases skolotāji (nodaļa):
def __init __ (sevis, vārds, kursi, kredītpunkti, skolotāji):
# Zvaniet vecāku klases konstruktoram
super ().__init __ (vārds, kursi, kredītpunkti, skolotāji)
def display_Teacher_info (pats):
drukāt ("Kopā skolotāju:% d"% sevis.kopējie_skolotāji)
# Definējiet trešo bērnu klasi, kas mantota no divām klasēm
klases skolotāja kurss (kursi, skolotāji):
def __init __ (sevis, vārds, kursi, kredītpunkti, skolotāji):
# Zvaniet vecāku klases konstruktoram
super ().__init __ (vārds, kursi, kredītpunkti, skolotāji)
def display_details (pats):
super ().displejs ()
super ().display_Course_info ()
super ().display_Teacher_info ()
drukāt ("Pirmās bērnu klases izmantošana")
objCourses = Kursi ('CSE', 72, 150, 50)
objKursi.displejs ()
objKursi.display_Course_info ()
drukāt ("\ nIzmantojot otro bērnu klasi")
objTeachers = Skolotāji (“BBA”, 65, 140, 55)
objSkolotāji.displejs ()
objSkolotāji.display_Teacher_info ()
print ("\ nTrešās bērnu klases izmantošana, kas mantota no vairākām klasēm")
objDCT = Skolotāja kurss ('angļu valoda', 60, 122, 20)
objDCT.display_details ()

Izeja:

Pēc iepriekš minētā skripta izpildes parādīsies šāda izeja. Šeit izveidoti trīs rezultāti, izveidojot trīs bērnu klases objektus.

Secinājums:

The super () Funkciju var izmantot tikai bērnu klases iekšienē, lai izsauktu konstruktoru un jebkuru citu vecāku klases metodi. Šīs apmācības veidi ir parādīti šajā apmācībā, izveidojot viena un daudzlīmeņu mantojumu. Es ceru, ka šīs funkcijas izmantošanas mērķis OOP tiks notīrīts pēc šīs apmācības izlasīšanas.

5 labākie ergonomiskie datoru peles izstrādājumi Linux
Vai ilgstoša datora lietošana izraisa sāpes plaukstas locītavā vai pirkstos? Vai jūs ciešat no stīvām locītavām un jums pastāvīgi ir jāspiež rokas? Va...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...