Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

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

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

Вы можете изменить значение оператора в Python в зависимости от используемых операндов. В этом руководстве вы узнаете, как использовать перегрузку операторов в объектно-ориентированном программировании Python.

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

Операторы Python работают со встроенными классами. Но один и тот же оператор ведет себя по-разному с разными типами. Например, 07 Оператор выполняет арифметическое сложение двух чисел, объединяет два списка или объединяет две строки.

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

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

04

Вывод

13

Здесь мы видим, что 19 был поднят, так как Python не знал, как добавить два 22 объекты вместе.

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

<час>

Специальные функции Python

Функции класса, начинающиеся с двойного подчеркивания 39 в Python называются специальными функциями.

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

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

Используя специальные функции, мы можем сделать наш класс совместимым со встроенными функциями.

21

Предположим, мы хотим, чтобы 59 функция для печати координат 60 объект вместо того, что мы получили. Мы можем определить 75 метод в нашем классе, который управляет тем, как печатается объект. Давайте посмотрим, как мы можем этого добиться:

35

Теперь давайте попробуем 83 снова работать.

43

Вывод

51

Так-то лучше. Оказывается, этот же метод вызывается, когда мы используем встроенную функцию 92 или 101 .

64

Итак, когда вы используете 115 или 124 , Python внутренне вызывает 138 метод. Отсюда и название, специальные функции.

Теперь вернемся к перегрузке операторов.

<час>

Перегрузка оператора +

Чтобы перегрузить 143 оператор, нам нужно будет реализовать 157 функция в классе. С большой властью приходит большая ответственность. Внутри этой функции мы можем делать все, что захотим. Но более разумно возвращать 168 объект суммы координат.

76

Теперь снова попробуем операцию сложения:

83

Вывод

93

На самом деле происходит следующее:когда вы используете 178 , Python вызывает 180 что, в свою очередь, равно 191 . После этого операция сложения выполняется так, как мы указали.

Точно так же мы можем перегрузить и другие операторы. Специальная функция, которую нам нужно реализовать, представлена ​​в таблице ниже.

Оператор Выражение Внутри
Дополнение 203 217
Вычитание 228 230
Умножение 241 250
Мощность 266 279
Отдел 283 297
Этажное разделение 300 319
Остаток (по модулю) 327 333
Побитовый сдвиг влево 345 355
Побитовый сдвиг вправо 365 376
Побитовое И 383 392
Побитовое ИЛИ 403 419
Побитовое исключающее ИЛИ 421 431
Побитовое НЕ 444 455
<час>

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

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

Предположим, мы хотим реализовать символ меньше чем 465. символ в нашем 474 класс.

Давайте сравним величину этих точек от начала координат и вернем результат для этой цели. Это может быть реализовано следующим образом.

100 

Вывод

117

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

Оператор Выражение Внутри
Меньше чем 489 492
Меньше или равно 500 517
Равно 524 534
Не равно 548 554
Больше, чем 564 577
Больше или равно 589 593

Python

  1. Типы данных Python
  2. Операторы Python
  3. Оператор передачи Python
  4. Аргументы функции Python
  5. Словарь Питона
  6. Наследование Питона
  7. Итераторы Python
  8. Замыкания Python
  9. Python @property декоратор
  10. Дата и время Python