Python

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

Перевантаження оператора в Python
Перевантаження відповідає тенденції методу або оператора діяти кількома способами в сенсі програмування на основі параметрів, наданих техніці або операндам, на яких працює оператор. Перевантаження оператора означає, що тривале значення надається вище визначеного функціонального значення.  Оператори Python функціонують для вбудованих класів, але для різних типів той самий оператор діє по-різному. Ми побачимо, як ми можемо зробити перевантаження оператора в Python у цьому посібнику.

Наприклад, оператор + може додавати два числа математично, поєднувати два списки або об'єднувати рядки. Ось проста програма на python, щоб показати огляд оператора +, який використовується для додавання та конкатенації.

Ну, що прийде, якщо ми використовуємо ці оператори для об'єктів у визначений користувачем клас? Візьмемо наступну програму, яка намагається імітувати пляму у двовимірній схемі розмірів. Нижче ви вже бачите це, оскільки Python не розумів, як об’єднати 2 екземпляри координат, a Помилка типу генерується.

Ми можемо виконати це завдання в Python за допомогою перевантаження оператора, але перш за все, давайте розберемось із спеціальними методами.

Спеціальні магічні методи

Методи класів, що починаються з подвійне підкреслення класифікуються в Python як спеціальні методи або магічні функції. Функції, які використовуються для здійснення конкретної діяльності. Звичайні методи, які ми описуємо для класу, не є такими функціями. Одним з них буде __у цьому_() функція, про яку ми згадали вище. Щоразу, коли ми створюємо новий об’єкт у цьому класі, він називається. Ми надамо наші вбудовані функції сумісним із класом за допомогою магічних функцій. У Python існує кілька інших спеціальних функцій.

Двійкові або математичні оператори

Ось деталі магічних функцій для перевантаження двійкових або математичних операторів python.

Оператори співвідношення чи порівняння

Нижче наведено деталі магічних функцій для перевантаження операторів порівняння пітона або реляційних операторів.

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

Ось деталі деяких магічних функцій для перевантаження операторів присвоєння в коді python.

Тепер прийшов час переглянути кілька зразків кодів, коли ми використовуємо магічні методи, згадані вище, і перевантажуємо певні оператори.

Перевантажте двійкові або математичні оператори

Приклад 01: Оператор додавання
Вам доведеться застосувати __add_ () в класі для перевантаження + оператора. Великий борг приходить з великою силою. Усередині цього методу ви можете робити все, що завгодно. Але набагато раціональніше повернутиКоординація об'єкт координатної суми.

Коли ви спробували c1 + c2, Python насправді називає свою магію .__add __ () метод як c1.__додати __ (c2) або Coord.__додати __ (c1, c2).

Приклад 02: Оператор множення
Так само ви можете навіть перевантажити кілька двійкових операторів, використовуючи магічні функції. У тому ж наведеному вище прикладі ми отримуємо, перевантажуючи оператор множення 2, 6 як наша відповідь на магічну функцію.

Приклад 03: Оператор віднімання
За допомогою оператора віднімання ми отримали -1, -1 як наша відповідь.

Приклад 04: Оператор живлення
Ми перевантажили потужність оператор під час використання функції магічної сили; ми отримали 1, 8.

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

Ви також можете використовувати інші математичні оператори, напр.g., оператор розділення та підлоги, для перевантаження.

Перевантажте оператори порівняння

Python не обмежує перевантаження операторів лише двійковими або арифметичними операторами. Ми також можемо перевантажити оператори порівняння.

Приклад 01: Менше, ніж оператор
Припустимо, нам потрібно менше, ніж '<' symbol в нашому 'Координація клас, який буде впроваджено. Давайте порівняємо значення цих аргументів із джерела та дамо відповідь. Як зазвичай, його можна застосовувати. У нас є три об’єкти, і ми порівнюємо їх у виписках. В результаті ми отримаємо цей об’єкт c1 є менше ніж c2, так він виводить Правда. З іншої сторони, c2 і c1 є більш відмінний ніж c3; ось чому обидва помилкові результати.

Приклад 02: Не дорівнює оператору
Зараз перевантаження Не рівні (!=) Ви отримаєте оператор порівняння Правда у випадку першого та другого оператора print, оскільки він задовольняє умову, що обидва об'єкти не рівні. З іншого боку, об’єкт 1 дає те саме, що об’єкт 3, який не відповідає вимозі Не дорівнює. Ось чому виводиться третя заява на друк помилковий в результаті.

Приклад 03: Більший або рівний оператору
Спробуємо той самий приклад для перевантаження більше або дорівнює оператору. У випадку першого твердження для друку ми маємо 2> = 13, який є неправда; тому воно дає False. У другій та третій заявах друку ми отримали 13> = 2 і 2> = 2, відповідно. Є обидва Правда оскільки вони задовольняють умові більше або дорівнює.

Спробуйте інші оператори порівняння, наприклад.g., більш значущі, ніж, дорівнює, "менше або дорівнює" у вашому коді.

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

Погляньте на приклад перевантаження оператора присвоєння. Ми беремо подібний приклад із перевантаженням '- =' оператор присвоєння. Ми визначили два об’єкти, що мають значення координат y та z. Перший об’єкт c1 передає свої значення в 'себе.y ' і 'себе.z ' змінних відповідно. З іншого боку, об’єкт c2 передає свої значення в 'інший.y ' і 'інший.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 'і' self.z 'завдяки оператору присвоєння' =.'Під час друку цей код видасть результат об'єкта c1, який має дві змінні себе.y = 3 і себе.z = 4.

Висновок

Ми намагаємось охопити всі оператори у вашому коді для кращого розуміння перевантаження оператора.

Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...
Встановіть найновіший емулятор Dolphin для Gamecube & Wii на Linux
Емулятор Dolphin дозволяє грати у вибрані вами ігри Gamecube та Wii на персональних комп’ютерах Linux (ПК). Будучи вільно доступним і відкритим ігров...
Як використовувати GameConqueror Cheat Engine в Linux
Стаття висвітлює посібник із використання механізму читів GameConqueror в Linux. Багато користувачів, які грають у ігри в Windows, часто використовуют...