Python

Перегрузка оператора в Python

Перегрузка оператора в Python
Перегрузка соответствует тенденции метода или оператора действовать несколькими способами в смысле программирования на основе параметров, предоставленных методике или операндам, с которыми работает оператор. Перегрузка оператора означает, что над их предопределенным функциональным значением дается расширенное значение.  Операторы Python работают для встроенных классов, но для разных типов один и тот же оператор действует по-разному. В этом руководстве мы увидим, как можно выполнить перегрузку операторов в Python.

Например, оператор + может математически сложить два числа, объединить два списка или объединить строки. Вот простая программа на Python, чтобы показать проблеск оператора +, используемого для сложения и конкатенации.

А что будет, если мы будем использовать эти операторы для объектов в определяемые пользователем класс? Возьмем следующую программу, которая пытается смоделировать пятно на двумерной схеме размеров. Ниже вы уже можете видеть, что, поскольку Python не понимал, как объединить 2 экземпляра координат, Тип ошибки генерируется.

Эту задачу в Python можно выполнить с помощью перегрузки оператора, но в первую очередь разберемся со специальными методами.

Особые магические методы

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

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

Вот подробности волшебных функций для перегрузки двоичных или математических операторов Python.

Операторы отношения или сравнения

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

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

Вот подробности некоторых волшебных функций для перегрузки операторов присваивания в коде Python.

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

Перегрузите двоичные или математические операторы

Пример 01: Оператор сложения
Вам придется обеспечить соблюдение __Добавлять_() в классе, чтобы перегрузить + оператор. Великий долг приходит с большой силой. Внутри этого метода вы можете делать все, что захотите. Но гораздо рациональнее вернуть 'Coord ' объект координатной суммы.

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

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

Пример 03: Оператор вычитания
Используя оператор вычитания, мы получили -1, -1 как наш ответ.

Пример 04: Оператор мощности
Мы перегрузили мощность оператор при использовании функции power magic; у нас есть 1, 8.

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

Вы также можете использовать другие математические операторы, e.грамм., деление и оператор деления этажа, для перегрузки.

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

Python не ограничивает перегрузку операторов только двоичными или арифметическими операторами. Мы также можем перегружать операторы сравнения.

Пример 01: Оператор "Меньше"
Предположим, нам потребовалось меньше, чем '<' symbol в нашем 'Coord ' класс, который будет реализован. Сравним значение этих аргументов из источника и дадим ответ. Как обычно, его можно применять. У нас есть три объекта, и мы сравниваем их в операторах печати. В результате мы получим этот объект c1 является меньше чем c2, так что он выводит Правда. С другой стороны, c2 а также c1 находятся более отличный чем c3; поэтому оба вывода False.

Пример 02: Оператор не равен
Теперь перегружаем Не равный (!знак равно оператор сравнения, вы получите Правда в случае первого и второго оператора печати, потому что он удовлетворяет условию, что оба объекта не равны. С другой стороны, объект 1 дает то же, что и объект 3, что не соответствует требованию Не равно. Вот почему третий оператор печати выводит Ложь как результат.

Пример 03: Оператор больше или равно
Давайте попробуем тот же пример для перегрузки больше или равно оператору. В случае первого оператора печати мы имеем 2> = 13, который не правда; поэтому он дает False. Во втором и третьем операторах печати мы получили 13> = 2 а также 2> = 2, соответственно. Оба Правда поскольку они удовлетворяют условию больше или равно.

Попробуйте другие операторы сравнения, e.грамм., более значимо, чем, равно, «меньше или равно» в вашем коде.

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

Взгляните на пример перегрузки оператора присваивания. Возьмем аналогичный пример с перегрузкой знак равно оператор присваивания. Мы определили два объекта со значениями координат y и z. Первый объект c1 передает свои значения 'себя.y ' а также 'себя.z ' переменные соответственно. С другой стороны, объект c2 передает свои значения 'Другие.y ' а также 'Другие.z '.

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

Заключение

Мы стараемся охватить все операторы в вашем коде для лучшего понимания перегрузки операторов.

Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...
Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...