আমরা জানি + অপারেটর ব্যবহার করে সংখ্যা যোগ করা যায় এবং একই সাথে স্ট্রিং কনক্যাটেনেট ও করা যায়। এটি সম্ভব হয় কারণ + অপারেটর int ক্লাস এবং str ক্লাস দুটোই দ্বারা ওভারলোডেড। অপারেটরগুলো মূলত সংশ্লিষ্ট ক্লাসে ডিফাইন করা মেথড। অপারেটরদের জন্য মেথড ডিফাইন করার কে অপারেটর ওভারলোডিং বলা হয়। উদাহরণস্বরূপ, কাস্টম অবজেক্টের সাথে + অপারেটর ব্যবহার করতে হলে __add__ নামের একটি মেথড ডিফাইন করতে হয়।
উদাহরণ
নিচের কোডটি অপারেটর ওভারলোডিং কীভাবে কাজ করে তা বোঝাতে সহজ করবে
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(3)
print(c1.getRadius())
c2 = Circle(6)
print(c2.getRadius())
c3 = c1 + c2 # This is because we have overloaded + operator by adding a method __add__
print(c3.getRadius())
আউটপুট
এটি আউটপুট দেবে
3 6 9
একটি অপারেটরের বিহেভিয়র মডিফাই করা যাতে সেটি ইউজার-ডিফাইনড টাইপের সাথে কাজ করে, তাকে অপারেটর ওভারলোডিং বলা হয়। পাইথনে প্রতিটি অপারেটরের জন্য একটি відпов_SPESIAL মেথড রয়েছে, যেমন __add__। আরও ডিটেইলের জন্য docs.python.org/ref/specialnames.html দেখুন।