Рубрики
Без рубрики

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

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

Автор оригинала: Pankaj Kumar.

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

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

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

Пример: с изображением различного использования основных арифметических операторов

# Program to show use of 
# + operator for different purposes. 
  
print(5 + 5) 
  
# concatenate two strings 

print("Safa"+"Mulani")  
  
# Product two numbers 
print(10 * 10) 
  
# Repeat the String 
print("Safa"*4) 

Выход:

10
SafaMulani
100
SafaSafaSafaSafa

Как перегружать оператора в Python?

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

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

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

Magic Methods для двоичных операторов в Python

+ __add __ (Self, Другое)
__sub __ (Self, Другое)
* __mul __ (Self, Другое)
/ __truediv __ (Self, Другое)
// __flooordiv __ (Self, Другое)
% __mod __ (Self, Другое)
** __Pow __ (Self, Другое)

Волшебные методы для сравнения операторов в Python

< __LT __ (Я, Другое)
> __GT __ (Я, Другое)
<= __le __ (Self, Другое)
> = __ge __ (Self, Другое)
==. __eq __ (Self, Другое)
знак равно __ne __ (Self, Другое)

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

-= __isub __ (Self, Другое)
+ = __адд __ (я, другой)
знак равно __imul __ (Я, Другое)
/= __Идів __ (Я, Другое)
//= __iflooordiv __ (Self, Другое)
знак равно __iMod __ (Self, Другое)
знак равно __Pow __ (Self, Другое)

Волшебные методы для Онарных операторов

__neg __ (Я, Другое)
+ __pos __ (Self, Другое)
~ __invert __ (Self, Другое)

Пример: перегрузка двоичного + оператора в Python

Когда мы используем + оператор, магический метод __add__ автоматически вызывается, в котором определена операция для операции +. Следовательно, путем изменения кода Magic Method Mode, мы можем дать альтернативное значение оператору +.

  
# Program to overload an binary + operator 
  
class X: 
    def __init__(self, x): 
        self.x = x 
  
    # adding two objects  
    def __add__(self, y): 
        return self.x + y.x 
ob1 = X(5) 
ob2 = X(5) 
ob3 = X("Safa") 
ob4 = X("Mulani") 
  
print(ob1 + ob2) # simple addition of objects
print(ob3 + ob4) # concatenation of strings through object addition

Выход :

10
SafaMulani

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

class X: 
    def __init__(self, x): 
        self.x = x 
    def __lt__(self, other): # Overloading < operator
        if(self.x

Выход :

ob1 is less than ob2
Not equal

Пример: проба программы перегрузки оператора

class Animal:

    def __init__(self, age):
        self.__age = age

    def setage(self, age):
        self.__age = age
 
    def getage(self):
        return self.__age


    def __add__(self, predict):
        return Animal( self.__age + predict.__age )

    def __gt__(self, predict):
        return self.__age > predict.__age

    def __lt__(self, predict):
        return self.__age < predict.__age

    def __str__(self):
        return "Animal with original age " + str(self.__age)

c1 = Animal(5)
print(c1.getage())

c2 = Animal(5)
print(c2.getage())

c3 = c1 + c2
print(c3.getage())

print( c3 > c2) 

print( c1 < c2) 

print(c3) 

Выход :

5                                                                                                                                             
5                                                                                                                                             
10                                                                                                                                            
True                                                                                                                                          
False                                                                                                                                         
Animal with original age 10      

Рекомендации