#Operator overloading
class operatorOverloadObject:
def __init__(self, x = 0, y = 0):
self.x = x
self.y = y
def __str__(self):
return "({0},{1})".format(self.x,self.y)
def __add__(self,other): #Fucntion to overload + operator
x = self.x + other.x
y = self.y + other.y
return operatorOverloadObject(x,y)
obj1 = operatorOverloadObject(1, 2)
obj2 = operatorOverloadObject(3, 4)
print(obj1) #(1,2)
print(obj2) #(3,4)
print(obj1 + obj2) #(4,6)
#Other operations to overload...
#Addition p1 + p2, p1.__add__(p2)
#Subtraction p1 - p2, p1.__sub__(p2)
#Multiplication p1 * p2, p1.__mul__(p2)
#Power p1 ** p2, p1.__pow__(p2)
#Division p1 / p2, p1.__truediv__(p2)
#Floor Division p1 // p2, p1.__floordiv__(p2)
#Remainder (modulo) p1 % p2, p1.__mod__(p2)
#Bitwise Left Shift p1 << p2, p1.__lshift__(p2)
#Bitwise Right Shift p1 >> p2, p1.__rshift__(p2)
#Bitwise AND p1 & p2, p1.__and__(p2)
#Bitwise OR p1 | p2, p1.__or__(p2)
#Bitwise XOR p1 ^ p2, p1.__xor__(p2)
#Bitwise NOT ~p1, p1.__invert__()
class operatorOverloadObject:
def __init__(self, x = 0, y = 0):
self.x = x
self.y = y
def __str__(self):
return "({0},{1})".format(self.x,self.y)
def __add__(self,other): #Fucntion to overload + operator
x = self.x + other.x
y = self.y + other.y
return operatorOverloadObject(x,y)
obj1 = operatorOverloadObject(1, 2)
obj2 = operatorOverloadObject(3, 4)
print(obj1) #(1,2)
print(obj2) #(3,4)
print(obj1 + obj2) #(4,6)
#Other operations to overload...
#Addition p1 + p2, p1.__add__(p2)
#Subtraction p1 - p2, p1.__sub__(p2)
#Multiplication p1 * p2, p1.__mul__(p2)
#Power p1 ** p2, p1.__pow__(p2)
#Division p1 / p2, p1.__truediv__(p2)
#Floor Division p1 // p2, p1.__floordiv__(p2)
#Remainder (modulo) p1 % p2, p1.__mod__(p2)
#Bitwise Left Shift p1 << p2, p1.__lshift__(p2)
#Bitwise Right Shift p1 >> p2, p1.__rshift__(p2)
#Bitwise AND p1 & p2, p1.__and__(p2)
#Bitwise OR p1 | p2, p1.__or__(p2)
#Bitwise XOR p1 ^ p2, p1.__xor__(p2)
#Bitwise NOT ~p1, p1.__invert__()
No comments:
Post a Comment