Питхон

Питхон супер () функција

Питхон супер () функција
Питхон скрипта може да врши структурирано програмирање и објектно оријентисано програмирање (ООП). Супер () је уграђена Питхон функција ООП-а. Пожељно је основно знање о ООП-у да би се разумела сврха и употреба супер () метода. Једна од важних карактеристика ООП-а је наслеђивање. Нова класа се може створити наслеђивањем карактеристика друге класе, а зове се Наслеђивање. Овде се нова класа назива подкласа или подређена класа, а друга класа суперкласа или родитељска класа. Супер () функција се користи у подређеној класи за упућивање на родитељску класу и приступ свим променљивим и методама родитељске класе. Ова функција чини наследство лакшим за управљање. Како се ова функција може користити у Питхону, показало је ово упутство.

Пример-1: Употреба функције супер () у појединачном наслеђивању

Када се подређена класа креира наслеђивањем родитељске класе, тада се назива једно наслеђивање. Употреба супер () функција у једном наслеђивању приказана је у следећој скрипти. Књига је овде родитељска класа која садржи метод конструктора за иницијализацију података, боокТипе () начин штампања врсте књиге и попуст () Начин приказивања понуде с попустом доступан је или није. Енг_боок је подређена класа овде која садржи методу конструктора где је супер () функција се користи за позивање конструктора родитељске класе. Класа дете има још једну методу која се зове дисплаи_детаилс () да одштампа детаљне информације о књизи. Објекти родитељске и подређене класе су креирани касније да би позвали различите методе класа.

# Дефинишите родитељску класу
разред Књига:
# Дефинишите конструктор
деф __инит __ (само, наслов, аутор, врста, понуда):
себе.наслов = наслов
себе.аутор = аутор
себе.типе = типе
себе.понуда = понуда
# Дефинишите функцију за приказ врсте књиге
деф боокТипе (селф):
ако ја.типе == 1:
принт ("% с је% с књига."% (само.наслов, 'Инжењеринг'))
ако ја.типе == 2:
принт ("% с је% с књига."% (само.наслов, 'Медицински'))
ако ја.типе == 3:
принт ("% с је% с књига."% (само.наслов, 'Финансије'))
# Дефинишите функцију за приказ попуста
деф попуст (само):
ако ја.понуда == Тачно:
принт ("Књига има попуст.")
иначе:
принт („Књига нема попуст.")
# Дефинисати класу детета
цласс Енг_боок (Књига):
# Дефинишите конструктор
деф __инит __ (само, наслов, аутор, врста, понуда, цена):
супер ().__инит __ (наслов, аутор, врста, понуда)
себе.цена = цена
# Дефинишите функцију за приказ детаља о књизи
деф дисплаи_детаилс (селф):
супер ().попуст ()
ако ја.понуда == Тачно:
себе.цена = само.цена - само.цена * 0.15
принт ("Име књиге:% с"% селф.наслов)
принт ("Име аутора:% с"% селф.аутор)
принт ("Цена:% 0.2ф "% само.Цена)
принт ("Коришћење родитељске класе:")
# Дефинишите објекат родитељске класе
објбоок = Књига ('Медицинска микробиологија', 'Ернест Јаветз, Едвард А. Аделберг, Јосепх Л. Мелницк ', 2, Фалсе)
# Функција позива за приказ врсте књиге
објбоок.боокТипе ()
# Функција позива за приказ попуста
објбоок.попуст ()
принт ("\ нУпотреба подређене класе:")
# Дефинисати објекат подређене класе
објЕнгБоок = Енг_боок ('Инжењерска математика', 'Х К Дасс', 1, Тачно, 50)
# Функција позива за приказ детаља о књизи
објЕнгБоок.дисплаи_детаилс ()

Излаз:

Следећи излаз ће се појавити након извршавања горње скрипте. Први излаз генерише се употребом објекта родитељске класе, а други излаз генерише употребом објекта подређене класе.

Пример-2: Употреба функције супер () у више наслеђа

Када се генерише нова класа наслеђивањем више класа, овај тип наслеђивања назива се више наслеђа. Употреба функције супер () у више наслеђа приказана је у следећој скрипти. Одељење је родитељска класа која садржи метод конструктора за иницијализацију променљивих и приказ() метода за испис назива одељења. Курсеви су класа дете наслеђена из Одељење класе, а садржи методу конструктора и дисплаи_Цоурсе_инфо () метода за приказ детаља курса. Наставници су класа детета наслеђена из Одељење класе, а садржи методу конструктора и дисплаи_Теацхер_инфо () метода за приказ детаља наставника. Теацхер_Цоурсе је последња подређена класа скрипте која је дефинисана наслеђивањем обе Курсеви и Наставници класе. Објекти три подређене класе су створени на крају скрипте за приступ различитим методама класа. Тхе супер () функција је коришћена унутар методе конструктора свих подређених класа за позивање конструктора родитељске класе. За стварање објекта подређене класе потребне су четири вредности аргумената, јер конструкција класе одељења садржи четири аргумента.

# Дефинишите родитељску класу
разред Одељење ():
деф __инит __ (селф, депт_наме, тотал_цоурсес, тотал_цредит, тотал_еацхерс):
себе.депт_наме = име_депт
себе.тотал_цоурсес = тотал_цоурсес
себе.тотал_цредит = тотал_цредит
себе.укупно_наставника = укупно_наставника
деф приказ (само):
принт ("Назив одељења:% с"% селф.име_депт)
# Дефинишите први подређени разред
курсеви (одељење):
деф __инит __ (себе, име, курсеве, кредите, наставнике):
# Позовите конструктор родитељске класе
супер ().__инит __ (име, курсеви, кредити, наставници)
деф дисплаи_Цоурсе_инфо (селф):
принт ("Укупно курсева:% д"% само.тотал_цоурсес)
принт ("Укупни кредити:% д"% само.тотал_цредит)
# Дефинишите други подређени разред
разред Наставници (одељење):
деф __инит __ (себе, име, курсеве, кредите, наставнике):
# Позовите конструктор родитељске класе
супер ().__инит __ (име, курсеви, кредити, наставници)
деф дисплаи_Теацхер_инфо (селф):
принт ("Укупно наставника:% д"% само.укупно_наставника)
# Дефинишите трећу подређену класу наслеђену из две класе
разред Теацхер_Цоурсе (Курсеви, наставници):
деф __инит __ (себе, име, курсеве, кредите, наставнике):
# Позовите конструктор родитељске класе
супер ().__инит __ (име, курсеви, кредити, наставници)
деф дисплаи_детаилс (селф):
супер ().приказ()
супер ().дисплаи_Цоурсе_инфо ()
супер ().дисплаи_Теацхер_инфо ()
принт ("Коришћење прве класе детета")
објЦоурсес = Курсеви ('ЦСЕ', 72, 150, 50)
објЦоурсес.приказ()
објЦоурсес.дисплаи_Цоурсе_инфо ()
принт ("\ нУпотреба друге подређене класе")
објТеацхерс = Наставници ('ББА', 65, 140, 55)
објТеацхерс.приказ()
објТеацхерс.дисплаи_Теацхер_инфо ()
принт ("\ нКоришћење треће подређене класе наслеђене из више класа")
објДЦТ = Теацхер_Цоурсе ('Енглисх', 60, 122, 20)
објДЦТ.дисплаи_детаилс ()

Излаз:

Следећи излаз ће се појавити након извршавања горње скрипте. Овде су генерисана три излаза стварањем објеката три подређене класе.

Закључак:

Тхе супер () функција се може користити само унутар подређене класе за позивање конструктора и било које друге методе родитељске класе. Употреба ове функције приказана је у овом упутству стварањем наслеђивања у једном нивоу и на више нивоа. Надам се да ће сврха употребе ове функције у ООП-у бити разјашњена након читања овог водича.

Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...
Топ 5 карата за хватање игара
Сви смо видели и волели стримовање играња на ИоуТубе-у. ПевДиеПие, Јакесептицие и Маркиплиер само су неки од најбољих играча који су зарадили милионе ...
Како развити игру на Линуку
Пре деценију, није много корисника Линука предвидело да ће њихов омиљени оперативни систем једног дана бити популарна платформа за играње комерцијални...