Python

Претоварване на оператора в Python

Претоварване на оператора в Python
Претоварването съответства на тенденцията на метод или оператор да действа по много начини по смисъла на програмиране, въз основа на параметрите, предоставени на техниката или операндите, върху които операторът работи. Претоварване на оператора означава, че продължителното значение е дадено над тяхното предварително дефинирано функционално значение.  Операторите на Python функционират за вградени класове, но за различните типове същият оператор действа по различен начин. Ще видим как можем да направим претоварване на оператора в Python в това ръководство.

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

Е, какво става, ако използваме тези оператори за обекти в a дефиниран от потребителя клас? Нека вземем следната програма, която се опитва да симулира място в двумерната схема на размерите. По-долу вече можете да видите това, тъй като Python не разбира как да се присъедини към 2 екземпляра на координати, a Тип грешка се генерира.

Можем да изпълним тази задача в Python чрез претоварване на оператора, но на първо място, нека разберем специалните методи.

Специални магически методи

Методи на класа, започващи с двойно подчертаване са класифицирани в Python като специални методи или магически функции. Функциите, които се използват за извършване на конкретни дейности. Обичайните методи, които описваме за клас, не са такива функции. Един от тях би бил __в него_() функция, която споменахме по-горе. Всеки път, когато изградим нов обект в този клас, той се нарича. Ще направим нашите съвместими с класа вградени функции чрез магически функции. В Python има няколко други специални функции.

Двоични или математически оператори

Ето подробностите за магическите функции за претоварване на двоичните или математическите оператори на python.

Релационни или сравнителни оператори

По-долу са дадени подробностите за магическите функции за претоварване на операторите за сравнение на питон или релацията.

Оператори за присвояване

Ето подробностите за някои магически функции за претоварване на операторите на присвояване в python код.

Сега е време да разгледаме няколко примерни кода, когато използваме магическите методи, споменати по-горе и претоварваме определени оператори.

Претоварвайте двоичните или математическите оператори

Пример 01: Оператор за добавяне
Ще трябва да наложите __add_ () метод в класа за претоварване на + оператор. Голям дълг пристига с голяма сила. Вътре в този метод можете да правите всичко, което искате. Но е много по-рационално да се върнеCoord ' обект на координатната сума.

Когато сте опитали c1 + c2, Python всъщност нарича магията си .__add __ () метод като c1.__add __ (c2) или Coord.__add __ (c1, c2).

Пример 02: Оператор за умножение
По същия начин можете дори да претоварите няколко бинарни оператора, като използвате магически функции. В същия пример по-горе, докато претоварваме оператора за умножение, получаваме 2, 6 като наш отговор на магическата функция.

Пример 03: Оператор на изваждане
Използвайки оператора за изваждане, получихме -1, -1 като наш отговор.

Пример 04: Захранващ оператор
Претоварихме мощност оператор, докато използвате функцията power magic; имаме 1, 8.

Пример 05: Оператор на модула
Претоварвайки оператора на модула, ние използвахме __mod__ магическа функция за получаване на модула.

Можете също да използвате другите математически оператори, напр.ж., оператор на разделяне и разделяне на пода, за претоварване.

Претоварете операторите за сравнение

Python не ограничава претоварването на операторите само до двоични или аритметични оператори. Също така сме в състояние да претоварим операторите за сравнение.

Пример 01: По-малко от оператор
Да приемем, че изисквахме по-малко от '<' symbol в нашата 'Coord ' клас за изпълнение. Нека сравним стойността на тези аргументи от източника и да дадем отговора. Както обикновено, може да се приложи. Имаме три обекта и ги сравняваме в отчети за печат. В резултат на това ще получим този обект c1 е по-малко отколкото c2, така че извежда Вярно. От друга страна, c2 и c1 са по-отлично отколкото c3; ето защо и двете False изход.

Пример 02: Не е равно на оператора
Сега претоварване на Не е равно (!=) оператор за сравнение, ще получите Вярно в случай на първия и втория оператор за печат, защото отговаря на условието, че и двата обекта не са равни. От друга страна, обект 1 дава същото като обект 3, който не отговаря на изискването за Не е равно. Ето защо излиза третият оператор за печат Невярно като резултат.

Пример 03: По-голям или равен на оператора
Нека опитаме същия пример за претоварване на по-голямо или равно към оператора. В случай на първото изявление за печат, имаме 2> = 13, кое е не е вярно; ето защо дава False. Във втория и третия печатни изявления имаме 13> = 2 и 2> = 2, съответно. И двете са Вярно тъй като те отговарят на условието за по-голямо или равно на.

Опитайте другите оператори за сравнение, напр.ж., по-значим от, равен на, „по-малък или равен на“ и във вашия код.

Претоварете операторите за присвояване

Разгледайте пример за претоварване на оператора за присвояване. Вземаме подобен пример с претоварването на '- =' оператор за присвояване. Дефинирали сме два обекта със стойности на y и z координати. Първи обект c1 предава своите стойности на 'себе си.ти и 'себе си.z ' променливи, съответно. От друга страна, обектът c2 предава своите стойности на 'друго.ти и 'друго.z '.

Обект c1 има стойности на себе си.y = 1 и себе си.z = 1 точно сега. Предметът c2 стойности 'други.y = -2 ' и 'друго.z = -3 ' е предаден на изваден от обект c1 стойности. В резултат на това се получават c1 - c2 себе си.y - друго.y = 1 - (- 2) и себе си.z - друго.z = 1 - (- 3). Изчисленият резултат, който е 3 и 4, е запазен в себе си.x 'и' себе си.z 'поради оператора за присвояване на' =.'При печат този код ще изведе резултата от обект c1, който има две променливи себе си.y = 3 и себе си.z = 4.

Заключение

Опитваме се да обхванем всички оператори във вашия код за по-добро разбиране на претоварването на оператора.

Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...
Най-добрите приложения за картографиране на геймпад за Linux
Ако искате да играете игри на Linux с геймпад вместо типична система за въвеждане на клавиатура и мишка, има някои полезни приложения за вас. Много ко...
Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...