Питхон

Преоптерећење оператора у Питхону

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

На пример, оператор + може математички додати два броја, комбиновати две листе или повезати низове. Ево једноставног питхон програма који показује увид у + оператор који се користи за додавање и спајање.

Па, шта долази ако ове операторе користимо за објекте у а кориснички дефинисано класа? Узмимо следећи програм који покушава да симулира тачку у 2-Д шеми димензија. Испод то већ можете видети јер Питхон није разумео како да споји 2 инстанце координата, а Упишите грешку се генерише.

Овај задатак можемо остварити у Питхону преко преоптерећења оператора, али пре свега, хајде да разумемо посебне методе.

Посебне магијске методе

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

Бинарни или математички оператори

Ево детаља о магијским функцијама за преоптерећење битових или математичких оператора питхона.

Релациони оператери или оператери поређења

Испод су детаљи чаробних функција за преоптерећење питхон упоредних или релационих оператора.

Оператори доделе

Ево детаља о неким магичним функцијама за преоптерећење оператора доделе у питхон коду.

Сада је време да погледате неколико примера кодова када користимо горе поменуте магијске методе и преоптеретимо одређене операторе.

Преоптеретите бинарне или математичке операторе

Пример 01: Оператор сабирања
Мораћете да примените __додати_() метода у класи за преоптерећење + оператер. Велика дужност стиже са великом снагом. Унутар ове методе можете радити све што желите. Али много је рационалније вратити 'Цоорд ' објект координатног збира.

Када сте пробали ц1 + ц2, Питхон заправо назива своју магију .__додај __ () метод као ц1.__додај __ (ц2) или Цоорд.__додај __ (ц1, ц2).

Пример 02: Оператор множења
Исто тако, чак можете и преоптеретити неколико бинарних оператора помоћу магичних функција. У истом горњем примеру, док преоптерећујемо оператор множења, добијамо 2, 6 као наш одговор на магијску функцију.

Пример 03: Оператор одузимања
Користећи оператор одузимања, добили смо -1, -1 као наш одговор.

Пример 04: Оператер напајања
Преоптеретили смо снага оператер док користи функцију повер магиц; имамо 1, 8.

Пример 05: Оператор модула
Преоптерећујући оператор модула, користили смо __мод__ магична функција за добијање модула.

Такође можете да користите друге математичке операторе, нпр.г., руковач и подела пода, за преоптерећење.

Преоптеретите операторе упоређивања

Питхон не ограничава преоптерећење оператора само на бинарне или аритметичке операторе. Такође смо у могућности да преоптеретимо операторе поређења.

Пример 01: Мање од оператора
Претпоставимо да смо захтевали мање од '<' symbol у нашем 'Цоорд ' класа која се спроводи. Упоредимо вредност ових аргумената из извора и даћемо одговор. Као и обично, може се применити. Имамо три објекта и упоређујемо их у изјавама за штампу. Као резултат, добићемо тај објекат ц1 је мање него ц2, па излази Истинито. С друге стране, ц2 и ц1 су изврсније него ц3; зато обоје Фалсе оутпут.

Пример 02: Није једнако оператеру
Сада преоптерећујем Није једнако (!=) упоређивач, добићете Истинито у случају првог и другог исписа исказа јер задовољава услов да оба објекта нису једнака. С друге стране, објекат 1 даје исто што и објекат 3, који не испуњава захтев Није једнако. Због тога излази трећа изјава за штампу Нетачно као резултат.

Пример 03: Већи од или једнак оператеру
Покушајмо са истим примером за преоптерећење веће или једнако оператеру. У случају прве изјаве за штампу имамо 2> = 13, која је није истина; зато и даје Фалсе. У другој и трећој штампаној изјави смо добили 13> = 2 и 2> = 2, редом. Обоје смо Истинито пошто задовољавају услов већи од или једнак.

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

Преоптерети операторе додељивања

Погледајте пример преоптерећења оператора доделе. Узимамо сличан пример са преоптерећењем '- =' оператер доделе. Дефинисали смо два објекта који имају вредности и и з координата. Први објекат ц1 преноси своје вредности на 'себе.и ' и 'себе.з ' променљиве, односно. С друге стране, објекат ц2 преноси своје вредности на 'друго.и ' и 'друго.з '.

Предмет ц1 има вредности од себе.и = 1 и себе.з = 1 одмах. Објекат ц2 вредности 'друго.и = -2 ' и 'друго.з = -3 ' је прослеђено одузети од објекта ц1 вредности. Као резултат, резултат ц1 - ц2 себе.и - друго.и = 1 - (- 2) и себе.з - друго.з = 1 - (- 3). Израчунати резултат, који је 3 и 4, сачуван је у себи.к 'и' селф.з 'због оператора доделе од' =.'На испису, овај код ће дати резултат објекта ц1, који има две променљиве себе.и = 3 и себе.з = 4.

Закључак

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

Топ 5 ергономских производа за рачунарски миш за Линук
Да ли дуготрајна употреба рачунара изазива бол у зглобу или прстима? Патите ли од укочених зглобова и стално морате да се рукујете? Да ли осећате гору...
Како променити поставке миша и додирне табле помоћу Ксинпут-а у Линук-у
Већина Линук дистрибуција подразумевано испоручује библиотеку „либинпут“ за обраду улазних догађаја на систему. Може да обрађује улазне догађаје и на ...
Замените тастере миша другачије за различити софтвер помоћу Кс-Моусе Буттон Цонтрол
Можда вам је потребан алат који би могао да промени контролу миша са сваком апликацијом коју користите. Ако је то случај, можете испробати апликацију ...