हम जानते हैं कि हम नंबर जोड़ने के लिए + ऑपरेटर का उपयोग कर सकते हैं और उसी समय स्ट्रिंग्स को कनकैटेनेट करने के लिए भी। यह संभव है क्योंकि + ऑपरेटर 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 # यह इसलिए क्योंकि हमने __add__ मेथड जोड़कर + ऑपरेटर को ओवरलोड किया है
print(c3.getRadius())
आउटपुट
यह आउटपुट देता है:
3 6 9
ऑपरेटर के व्यवहार को संशोधित करना ताकि यह यूज़र-डिफाइन्ड टाइप्स के साथ काम करे, ऑपरेटर ओवरलोडिंग कहलाता है। Python में हर ऑपरेटर के लिए एक संबंधित स्पेशल मेथड होता है, जैसे __add__। अधिक जानकारी के लिए, docs.python.org/ref/specialnames.html देखें।