मैंने हाल ही में पाइथन में ऑपरेटर ओवरलोडिंग के बारे में सीखा है और मैं जानना चाहता हूं कि निम्नलिखित संभव है या नहीं।ऑपरेटर के दाईं ओर ऑब्जेक्ट के साथ पाइथन में ऑपरेटर ओवरलोडिंग
फोलिंग हाइपोटेटिका/प्रदूषित वर्ग पर विचार करें।
class My_Num(object):
def __init__(self, val):
self.val = val
def __add__(self, other_num):
if isinstance(other_num, My_Num):
return self.val + other_num.val
else:
return self.val + other_num
मुझे पता है कि जिस तरह से है कि ऊपर लिखा है, मैं इस
n1 = My_Num(1)
n2 = My_Num(2)
n3 = 3
print n1 + n2
print n1 + n3
जैसे काम कर सकें और उन अपेक्षा के अनुरूप काम करेंगे। मुझे यह भी पता है कि जिस तरह से यह वर्तमान में लिखा है कि मैं इस
n1 = My_Num(1)
n2 = 2
print 2 + n1
ऐसा नहीं कर सकते वहाँ वैसे भी इस के आसपास है? मुझे पता है कि यह उदाहरण दूषित है लेकिन मेरे पास एक ऐसा एप्लिकेशन है जिसमें यह बहुत उपयोगी होगा अगर मैंने ऑपरेटर ओवरलोडिंग किया था, जिस वर्ग के लिए मैं ऑपरेटर को परिभाषित करता हूं वह ऑपरेटर के दाईं ओर दिखाई दे सकता है। क्या यह अजगर में संभव है?
धन्यवाद। क्या __radd__ केवल एक है जो इसे अनुमति देता है? मेरे ऑपरेटरों के लिए मुझे अधिभारित करने वाले विशिष्ट ऑपरेटर >> और << ऑपरेटर हैं। क्या मैं बस भाग्य से बाहर हूं, मैं उन ऑपरेटरों के लिए ऐसा करना चाहता हूं? – martega
नहीं। क्या आपने लिंक पर क्लिक किया था? '__rrshift__' है, और इसी तरह। – senderle
प्रत्येक कक्षा के लिए कौन से ऑपरेटरों को परिभाषित किया जाता है, इसे नियंत्रित करके सीमित सीमा तक तुलना करना संभव है। यदि ए और बी में केवल __lt__ परिभाषित किया गया है, उदाहरण के लिए। एक ए थोड़ा सा अंत से संबंधित विधि को कॉल करेगा। –