Питхон

Наслеђивање Питхона

Наслеђивање Питхона

Питхон је објектно оријентисани програмски језик. У објектно оријентисаном програмском језику креирамо класе и изводимо предвиђену функционалност. Наслеђивање је основна карактеристика објектно оријентисаних програмских језика. Наслеђивање се може дефинисати као способност једне класе да наследи све функције и својства друге класе. Наслеђивање у основи омогућава проширивање својстава постојеће класе. Наслеђивање се користи са два главна концепта:

  1. Родитељска класа или основна класа
  2. Класа детета или изведена класа

Родитељска класа је класа која омогућава наслеђивање других класа. Такође се назива основна класа. Класа Цхилд или изведена класа је она класа која наслеђује сва својства и функције друге класе. Наслеђивање промовише неколико предности, тј.е., представља представљање феномена наследства у стварном свету. Подстиче поновну употребу кода. Ако је функција дефинисана у једној класи, друга класа може наследити ову класу и користити све постојеће функције. За обављање сличних задатака није потребно изнова и изнова писати исти код. Наслеђивање се примењује на више нивоа. На пример, ако се класа Б наследи од А, а класа Ц наследи од класе Б, класа Ц има сва својства класе Б и класа А. Синтакса наслеђивања је следећа:

Цласс ПарентЦласс:
Детаљи имплементације родитељске класе
класа ЦхилдЦласс:
Детаљи примене класе детета

Иако подређена класа има приступ свим карактеристикама и функцијама родитељске класе, међутим, она може да дода и своје нове функције и функције.

Овај чланак описује и покрива све аспекте Питхон наслеђивања.

Имплементација наследства у Питхону

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

Размотримо животињу као супер класу и применимо наследство. У доњем примеру, створили смо једну класу животиња. Класа животиња је родитељска класа. Штавише, створили смо класе паса и мачака које наслеђују својства и функције класе животиња. Кључна реч пасс користи се у подређеној класи, када не морамо да применимо проширену функционалност у подређеној класи.

#креирање родитељске класе
класа Животиње:
#иницијализација функција
#иницијализација имена животиње и врсте врсте
деф __инит __ (селф, наме, специе_типе):
себе.име = име
себе.специе_типе = специе_типе
#а функција за испис имена животиње
деф име исписа (само):
принт ("Име животиње је:", само.име)
#а функција за испис врсте врсте животиња
деф принтспецие (селф):
принт ("Тип врсте је:", селф.специе_типе)
#креирање класе паса као класе детета класе животиња
разред Пас (животиња):
# без продужења или измене
проћи
#нов класа паса има приступ свим функцијама и својствима класе животиња
#креирање објекта класе пас
догОбј = Пас ("Пас", "месојед")
догОбј.принтнаме ()
догОбј.принтспецие ()
#креирање класе мачака као класе детета класе животиња
разред Мачка (животиња):
# функција иницијализације класе мачака
деф __инит __ (селф):
#позивање и коришћење функције иницијализације класе животиња
Животиња.__инит __ (ја, "мачка", "месождер сисар")
#нов класа мачака има приступ свим функцијама и својствима класе животиња
#креирање објекта класе мачака
цатОбј = Мачка ()
цатОбј.принтнаме ()
цатОбј.принтспецие ()

Оутпут

Тхе „Животиња.__инит __ (ја, „мачка“, „месождер сисар“) “ цалл је функција иницијализације класе Анимал.

Функција супер ()

Питхон пружа уграђену супер () функцију за наслеђивање свих својстава и функција родитељске класе. Када користимо функцију супер (), тада нема потребе да спомињемо име родитељске класе као у „Животиња.__инит __ (ја, „мачка“, „месождер сисар“) “ али функција супер () аутоматски показује на родитељску класу. Користимо супер функцију.

#креирање родитељске класе
класа Животиње:
#иницијализација функција
#иницијализација имена животиње и врсте врсте
деф __инит __ (селф, наме, специе_типе):
себе.име = име
себе.специе_типе = специе_типе
#а функција за испис имена животиње
деф име исписа (само):
принт ("Име животиње је:", само.име)
#а функција за испис врсте врсте животиња
деф принтспецие (селф):
принт ("Тип врсте је:", селф.специе_типе)
#креирање класе паса као класе детета класе животиња
разред Пас (животиња):
# користећи функцију супер ()
деф __инит __ (селф, наме, специе_типе):
супер ().__инит __ (име, врста_типа)
#нов класа паса има приступ свим функцијама и својствима класе животиња
#креирање објекта класе пас
догОбј = Пас ("Пас", "месојед")
догОбј.принтнаме ()
догОбј.принтспецие ()
#креирање класе мачака као класе детета класе животиња
разред Мачка (животиња):
# функција иницијализације класе мачака
# користећи функцију супер ()
деф __инит __ (селф, наме, специе_типе):
супер ().__инит __ (име, врста_типа)
#нов класа мачака има приступ свим функцијама и својствима класе животиња
#креирање објекта класе мачака
цатОбј = Мачка ("мачка", "месождер сисар")
цатОбј.принтнаме ()
цатОбј.принтспецие ()

Оутпут

Хајде сада да додамо још неке функционалности у одељења за децу. Свака класа наслеђује уобичајена својства и функције од родитељске класе, али подређена класа може имати неку додатну класу која је намењена управо овој класи. Хајде сада да креирамо нека додатна својства и функције у класи паса и мачака.

#креирање родитељске класе
класа Животиње:
#иницијализација функција
#иницијализација имена животиње и врсте врсте
деф __инит __ (селф, наме, специе_типе):
себе.име = име
себе.специе_типе = специе_типе
#а функција за испис имена животиње
деф име исписа (само):
принт ("Име животиње је:", само.име)
#а функција за испис врсте врсте животиња
деф принтспецие (селф):
принт ("Тип врсте је:", селф.специе_типе)
#креирање класе паса као класе детета класе животиња
разред Пас (животиња):
# користећи функцију супер ()
#пет име је ново додата функционалност
деф __инит __ (селф, наме, специе_типе, пет_наме):
супер ().__инит __ (име, врста_типа)
себе.пет_наме = пет_наме
#креирање нове функције
деф принтпетнаме (само):
принт ("Име кућног љубимца је:", само.име љубиимца)
#нов класа паса има приступ свим функцијама и својствима класе животиња
#креирање објекта класе пас
догОбј = Пас ("Пас", "месојед", "Макс")
догОбј.принтнаме ()
догОбј.принтспецие ()
догОбј.принтпетнаме ()
#креирање класе мачака као класе детета класе животиња
разред Мачка (животиња):
# функција иницијализације класе мачака
# користећи функцију супер ()
#додавање својстава хране и имена кућних љубимаца
деф __инит __ (селф, наме, специе_типе, фоод, пет_наме):
супер ().__инит __ (име, врста_типа)
себе.храна = храна
себе.пет_наме = пет_наме
#нев функција за приступ информацијама о храни
деф принтфоод (само):
принт ("Мачка воли:", самостално.храна)
# нова функција за име кућног љубимца
деф принтпетнаме (само):
принт ("Име кућног љубимца је:", само.име љубиимца)
#нов класа мачака има приступ свим функцијама и својствима класе животиња
#креирање објекта класе мачака
цатОбј = Мачка ("мачка", "месождер сисар", "бисквит", "тратинчица")
цатОбј.принтнаме ()
цатОбј.принтспецие ()

Оутпут

Замене функција

Замена функције је важан концепт у наслеђивању. Функција се назива замењеном функцијом ако је име функције исто у родитељској и подређеној класи, али је примена или функционалност функције различита у свакој класи. Погледајмо пример замењене функције у класи Анимал. У доњем примеру имамо функцију јести у разредима животиња, као и у одељењима деце (пас и мачка). Име функције је исто у разредима, али је примена другачија.

#креирање родитељске класе
класа Животиње:
деф јести (само):
принт ("Све животиње једу храну")
#цреатинг објецт
анималОбј = Анимал ()
#цаллинг фунцтион
анималОбј.јести ()
#креирање класе за псе
разред Пас (животиња):
деф јести (само):
принт ("Пас једе месо")
#цреатинг објецт
догОбј = Пас ()
#цаллинг фунцтион
догОбј.јести ()
разред Мачка (животиња):
деф јести (само):
принт ("Мачка једе кексе и неку посебну храну")
#цреатинг објецт
цатОбј = Мачка ()
#цаллинг фунцтион
цатОбј.јести ()

Оутпут

Закључак

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

Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...
Најбољи Линук Дистрос за игре у 2021
Линук оперативни систем далеко је превалио свој изворни, једноставни изглед заснован на серверима. Овај ОС се изузетно побољшао последњих година и сад...
Како снимити и стримовати своју играћу сесију на Линук-у
У прошлости се играње игара сматрало само хобијем, али с временом је играчка индустрија забележила огроман раст у погледу технологије и броја играча. ...