The python operators work for built-in classes.but same operator behaves differently with different type.for example,the + operator will perform arithmetic addition on two numbers,merge two list and concatenate two string.this feature in python,that allows same operator to have different meaning according to the context is called operator overloading the following
import math
class Circle:
def __init__(self, radius):
self.__radius = radius
def setRadius(self, radius):
self.__radius = radius
def getRadius(self):
return self.__radius
def area(self):
return math.pi * self.__radius ** 2
def __add__(self, another_circle):
return Circle( self.__radius + another_circle.__radius )
c1 = Circle(4)
print(c1.getRadius())
c2 = Circle(5)
print(c2.getRadius())
c3 = c1 + c2 # This became possible because we have overloaded + operator by adding a method named __add__
print(c3.getRadius())
Operator |
Expression |
Internally |
---|---|---|
Addition |
no1 + no2 |
no1._add_(no2) |
Subtraction |
no1 - no2 |
no1._sub_(no2) |
Multiplication |
no1 * no2 |
no1._mul_(no2) |
Power |
no1 ** no2 |
no1._pow_(p2) |
Division |
no1 / no2 |
no1._truediv_(no2) |
Floor Division |
no1 // no2 |
no1._floordiv_(no) |
Remainder |
no1 % no2 |
no1._mod_(no2) |
Bitwise Left Shift |
no1 << no2 |
no1._lshift_(no2) |
Bitwise Right Shift |
no1 >> no2 |
no1._rshift_(no2) |
Bitwise AND |
no1 & no2 |
no1._and_(no2) |
Bitwise OR |
no1 | no2 |
no1._or_(p2) |
Bitwise XOR |
no1 ^ no2 |
no1._xor_(no2) |
Bitwise NOT |
~no1 |
no1._invert_() |
Operator |
Expression |
Internally |
---|---|---|
Less Than |
no1 < no2 |
no1._lt_(no2) |
Less Than or Equal to |
no1 <= no2 |
no1._le_(no) |
Equal to |
no1 == no2 |
no1._eq_(no2) |
Not equal to |
no1 != no2 |
no1._ne_(no2) |
Greater Than |
no1 > no2 |
no1._gt_(no2) |
Greater Than or Equal to |
no1 >= no2 |
no1_ge_(no2) |