Класе и објекти Питхон - објектно оријентисано програмирање



Овај блог на тему „Питхон Цласс“ бави се основама класе, атрибута и различитих ООПС концепата као што су наслеђивање, полиморфизам и енкапсулација.

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

Хајде да почнемо.:-)





Шта је класа Питхон?

Класа у питхону је нацрт из којег се креирају одређени објекти. Омогућава вам структурирање софтвера на одређени начин. Ево питања како? Часови нам омогућавају да логички групишемо своје податке и функционишемо на начин који је лак за поновну употребу и на који можемо надоградити ако је потребно. Размотрите доњу слику.

шта је сериализабле у јави

ЦлассесАндОбјецтс - класа Питхон - ЕдурекаНа првој слици (А) представља нацрт куће која се може сматрати Класа . Истим планом можемо створити неколико кућа и то се може сматрати Предмети . Користећи класу, можете додати доследност својим програмима како би се могли користити на чистији и ефикаснији начин. Атрибути су чланови података (променљиве класе и променљиве инстанце) и методе којима се приступа тачкама.



  • Варијабла класе је променљива коју деле сви различити објекти / инстанце класе.
  • Променљиве инстанце су променљиве које су јединствене за сваку инстанцу. Дефинисан је унутар методе и припада само тренутној инстанци класе.
  • Методе се такође називају функцијама које су дефинисане у класи и описује понашање објекта.

Сада, кренимо напред и видимо како то функционише у ПиЦхарму. За почетак прво погледајте синтаксу класе питхон.

Синтакса :

класа Име_класе: исказ-1. . изјава-Н

Овде је „ класа' наредба креира нову дефиницију класе. Назив класе одмах следи кључну реч „ класа' у питону иза којег следи двотачка. Да бисте креирали класу у питхону, размотрите следећи пример:



запослени у класи: проследите #но атрибуте и методе емп_1 = запосленик () емп_2 = запосленик () # променљива величине може се ручно креирати емп_1.фирст = 'ааиусхи' емп_1.ласт = 'Јохари' емп_1.емаил='ааиусхи@едурека.цо 'емп_1.паи = 10000 емп_2.фирст =' тест 'емп_2.ласт =' абц 'емп_2.емаил='тест@цомпани.цом' емп_2.паи = 10000 принт (емп_1.емаил) принт (емп_2.емаил)

Оутпут -

ааиусхи@едурека.цо тест@цомпани.цом

Сад, шта ако не желимо ручно да подесимо ове променљиве. Видећете пуно кода, а такође је склон грешкама. Дакле, да бисмо то учинили аутоматским, можемо користити методу „инит“. Да бисмо то разумели, схватимо шта су тачно методе и атрибути у класи питхон.

Методе и атрибути у класи Питхон

Сада је стварање класе непотпуно без неке функционалности. Дакле, функционалности се могу дефинисати постављањем различитих атрибута који делују као контејнер за податке и функције повезане са тим атрибутима. Функције у питхону се такође називају и Методе . Говорећи о у томе метода , то је посебна функција која се позива кад год се инстанцује нови објекат те класе. Можете то сматрати методом иницијализације или ово можете сматрати конструкторима ако долазите из било које друге објектно оријентисане позадине програмирања, као што су Ц ++, Јава итд. Сада када поставимо методу унутар класе, они аутоматски добијају инстанцу. Хајде да наставимо са класом питхон и прихватимо име, презиме и плату користећи ову методу.

запослени у класи: деф __инит __ (селф, фирст, ласт, сал): селф.фнаме = фирст селф.лнаме = ласт селф.сал = сал селф.емаил = фирст + '.' + задњи + '@ цомпани.цом' емп_1 = запослени ('ааиусхи', 'јохари', 350000) емп_2 = запослени ('тест', 'тест', 100000) принт (емп_1.емаил) принт (емп_2.емаил)

Сада смо у оквиру наше методе „инит“ поставили ове променљиве инстанце (селф, фирст, ласт, сал). Селф је инстанца што значи кад год напишемо селф.фнаме = фирст, исто је што и емп_1.фирст = 'ааиусхи'. Тада смо креирали инстанце класе запослених где можемо проследити вредности наведене у инит методи. Ова метода узима инстанце као аргументе. Уместо да то радите ручно, то ће бити учињено аутоматски Сада.

Даље, желимо способност извршења неке врсте радње. За то ћемо додати а метода овом разреду. Претпоставимо да желим да функционалност приказује пуно име запосленог. Па, применимо ово практично.

запослени у класи: деф __инит __ (селф, фирст, ласт, сал): селф.фнаме = фирст селф.лнаме = ласт селф.сал = сал селф.емаил = фирст + '.' + задњи + '@ цомпани.цом' деф пуно име (само): повратак '{} {}'. формат (само.име, само.име) емп_1 = запослени ('ааиусхи', 'јохари', 350000) емп_2 = запослени ('тест', 'тест', 100000) принт (емп_1.емаил) принт (емп_2.емаил) принт (емп_1.фуллнаме ()) принт (емп_2.фуллнаме ())

Оутпут-

ааиусхи.јохари@цомпани.цом тест.тест@цомпани.цом ааиусхијохари тесттест

Као што видите горе, створио сам методу која се зове „пуно име“ унутар класе. Дакле, свака метода унутар класе питхон аутоматски узима инстанцу као први аргумент. Сада сам у оквиру ове методе написао логику за штампање пуног имена и враћање овог уместо емп_1 имена и презимена. Даље, користио сам „селф“ тако да ће радити са свим инстанцама. Стога да бисмо ово штампали сваки пут, користимо а метода .

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

запослени у класи: перц_раисе = 1,05 деф __инит __ (селф, фирст, ласт, сал): селф.фнаме = фирст селф.лнаме = ласт селф.сал = сал селф.емаил = фирст + '.' + ласт + '@ цомпани.цом' деф пуно име (само): повратак '{} {}'. формат (селф.фнаме, селф.лнаме) деф аппли_раисе (селф): селф.сал = инт (селф.сал * 1.05 ) емп_1 = запосленик ('ааиусхи', 'јохари', 350000) емп_2 = запосленик ('тест', 'тест', 100000) принт (емп_1.сал) емп_1.аппли_раисе () принт (емп_1.сал)

Оутпут-

350000 367500

Као што видите горе, прво сам одштампао плату, а затим применио повећање од 1,5%. Да бисмо приступили овим променљивим класе, морамо им приступити путем класе или инстанце класе. Сада, хајде да разумемо разне атрибуте у класи питхон.

Атрибути у класи Питхон

Атрибути у Питхону дефинишу својство објекта, елемента или датотеке. Постоје две врсте атрибута:

  • Уграђени атрибути класе: Унутар Питхон класа постоје различити уграђени атрибути. На пример _дицт_, _доц_, _наме _ итд. Дозволићу да узмем исти пример где желим да видим све парове кључ / вредност запосленика1. За то можете једноставно написати доњу изјаву која садржи простор имена класе:

    испис (емп_1 .__ дицт__)

    Након што га извршите, добићете излаз као што су: {„фнаме“: „ааиусхи“, „лнаме“: „јохари“, „сал“: 350000, „емаил“: „ааиусхи.јохари@цомпани.цом“}

  • Атрибути које дефинишу Корисници : Атрибути се креирају унутар дефиниције класе. Можемо динамички да креирамо нове атрибуте за постојеће инстанце класе. Атрибути се могу везати и за имена класа.

Следеће, имамо јавно, заштићено и приватни атрибути. Хајде да их детаљно разумемо:

Именовање Тип Значење
ИмеЈавноОви атрибути се могу слободно користити унутар или изван дефиниције класе
_намеЗаштићеноЗаштићени атрибути се не смеју користити ван дефиниције класе, осим ако нису унутар дефиниције поткласе
__имеПриватниОва врста атрибута је неприступачна и невидљива. Нити је могуће читати нити писати те атрибуте, осим унутар саме дефиниције класе


Следеће, схватимо најважнију компоненту у класи питхон тј. Објецтс.

Шта су објекти у класи Питхон?

Као што смо горе разговарали, објекат се може користити за приступ различитим атрибутима. Користи се за креирање инстанце класе. Инстанца је објекат класе створене у току извођења.

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

класа МиЦласс: деф фунц (селф): принт ('Хелло') # креира нови МиЦласс об = МиЦласс () об.фунц ()

Крећући се напред са класом питхон, хајде да разумемо различите концепте ООП-а.

ООПс концепти

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

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

Наслеђивање нам омогућава да наследимо атрибуте и методе из основне / родитељске класе. Ово је корисно јер можемо да креирамо поткласе и добијемо све функције наше родитељске класе. Тада можемо преписати и додати нове функционалности без утицаја на родитељску класу. Хајде да разумемо концепт класе родитеља и класе детета на примеру.

Као што видимо на слици, дете наследјује својства од оца. Слично томе, у питхону постоје две класе:

1. Родитељска класа (Супер или Основна класа)

2. Класа детета (поткласа или изведена класа)

табела корак по корак водич

Класа која наслеђује својства позната је као Дете Класа док је класа чија су својства наслеђена позната као Родитељ класа.

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

Хајде да наставимо са питхон класом и схватимо како је наследство корисно.

како се користе параметри у табели

Рецимо, желим да створим часове за типове запослених. Направићу „програмере“ и „менаџере“ као поткласе, јер ће и програмери и менаџери имати име, е-пошту и плату, а све ове функционалности биће ту у класи запослених. Дакле, уместо да копирамо код за поткласе, можемо једноставно поново да га употребимо тако што ћемо наследити од запосленог.

запослени у класи: нум_емплоиее = 0 рисе_амоунт = 1.04 деф __инит __ (селф, фирст, ласт, сал): селф.фирст = фирст селф.ласт = ласт селф.сал = сал селф.емаил = фирст + '.' + ласт + '@ цомпани.цом' воркер.нум_емплоиее + = 1 деф пуно име (селф): ретурн '{} {}'. формат (селф.фирст, селф.ласт) деф аппли_раисе (селф): селф.сал = инт ( селф.сал * рисе_амоунт) програмер класе (запослени): проћи емп_1 = програмер ('ааиусхи', 'јохари', 1000000) принт (емп_1.емаил)
 Оутпут - ааиусхи.јохари@цомпани.цом

Као што можете видети из горњег резултата, сви детаљи класе запосленика доступни су у класи програмера.Шта ако сада желим да променим зброј повишења за програмера на 10%? да видимо како то може практично да се уради.

запослени у класи: нум_емплоиее = 0 рисе_амоунт = 1.04 деф __инит __ (селф, фирст, ласт, сал): селф.фирст = фирст селф.ласт = ласт селф.сал = сал селф.емаил = фирст + '.' + ласт + '@ цомпани.цом' воркер.нум_емплоиее + = 1 деф пуно име (селф): ретурн '{} {}'. формат (селф.фирст, селф.ласт) деф аппли_раисе (селф): селф.сал = инт ( програмер класе селф.сал * раисе_амоунт) (запослени): рисе_амоунт = 1.10 емп_1 = програмер ('ааиусхи', 'јохари', 1000000) принт (емп_1.раисе_амоунт)
 Оутпут - 1.1

Као што видите, ажурирао је проценат раста зарада са 4% на 10%.Сада, ако желим да додам још један атрибут, рецимо програмски језик у нашој инит методи, али он не постоји у нашој родитељској класи. Постоји ли неко решење за то? Да! можемо копирати целокупну логику запослених и то учинити, али то ће опет повећати величину кода. Дакле, да бисмо то избегли, узмимо у обзир доњи код:

запослени у класи: нум_емплоиее = 0 рисе_амоунт = 1.04 деф __инит __ (селф, фирст, ласт, сал): селф.фирст = фирст селф.ласт = ласт селф.сал = сал селф.емаил = фирст + '.' + ласт + '@ цомпани.цом' воркер.нум_емплоиее + = 1 деф пуно име (селф): ретурн '{} {}'. формат (селф.фирст, селф.ласт) деф аппли_раисе (селф): селф.сал = инт ( програмер класе селф.сал * рисе_амоунт) (запослени): рисе_амоунт = 1.10 деф __инит __ (селф, фирст, ласт, сал, прог_ланг): супер () .__ инит __ (фирст, ласт, сал) селф.прог_ланг = прог_ланг емп_1 = програмер ( 'ааиусхи', 'јохари', 1000000, 'питхон') принт (емп_1.прог_ланг)

Стога сам са само мало кода унео промене. Користио сам супер .__ инит __ (први, последњи, паи) који наслеђује својства из основне класе.Да закључимо, наслеђивање се користи за поновну употребу кода и смањење сложености програма.

Класа Питхон: полиморфизам

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

Да разумемо на примеру:

класа Анимал: деф __инит __ (селф, наме): селф.наме = наме деф талк (селф): пасс цласс Дог (Анимал): деф талк (селф): принт ('Вооф') цласс Цат (Анимал): деф талк ( селф): принт ('МЕОВ!') ц = Мачка ('маца') ц.талк () д = Пас (Животиња) д.талк ()

Оутпут -

Мјау! Вооф

Даље, пређимо на други концепт објектно оријентисаног програмирања, тј. Абстракција.

Класа Питхон: Апстракција

Апстракција се користи за поједностављивање сложене стварности моделирањем класа које одговарају проблему. Овде имамо апстрактну класу која се не може инстанцирати. То значи да не можете креирати објекте или инстанце за ове класе. Може се користити само за наслеђивање одређених функционалности које називате основном класом. Дакле, можете наследити функционалности, али истовремено не можете створити инстанцу ове одређене класе. Хајде да разумемо концепт апстрактне класе са примером у наставку:

из абц увоза АБЦ, класа апстрактних метода Запослени (АБЦ): @абстрацтметход деф израчунати_плату (само, сал): проћи класу Програмер (запослени): деф израчунати_плату (само, сал): финалсалари = сал * 1.10 ретурн финалсалари емп_1 = Девелопер () (емп_1.цалцулате_салари (10000))

Оутпут-

11000.0

Као што можете видети из горњег резултата, повећали смо основну плату на 10%, тј. Зарада је сада 11000. Ако стварно наставите и направите објекат класе „Запослени“, бациће вам грешку као што питхон не не дозвољава вам да креирате објекат апстрактне класе. Али користећи наслеђивање, заправо можете наследити својства и обављати одговарајуће задатке.

Дакле, момци, овде се све радило на класе и предмете питхон-а укратко. Обухватили смо све основе класе Питхон, објекте и разне објектно оријентисане концепте у питхону, тако да сада можете почети да вежбате. Надам се да сте уживали читајући овај блог на тему „Питхон Цласс“ и да сте јасни у вези са свим аспектима о којима сам горе говорио. После класе питхон, смислићу још блогова на Питхону за сцикит леарн библиотеку и низ. Будите у току!

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре овог блога „Класа Питхон“ и јавићемо вам се што је пре могуће.

Да бисте стекли детаљно знање о Питхону, заједно са разним апликацијама, то можете уз наш онлајн онлајн тренинг са подршком 24/7 и доживотним приступом.