में रिवर्स ऑपरेटरों का उपयोग करके मैंने पहले कभी रिवर्स ऑपरेटर को संभाला नहीं है, इसलिए कृपया कोई फ्लेमिंग नहीं करें! बस उनके बारे में सीखना समाप्त कर दिया ताकि वे उन्हें आजमा सकें। लेकिन किसी कारण से, यह काम नहीं कर रहा है।पायथन
>>> class Subtract(object):
def __init__(self, number):
self.number = number
def __rsub__(self, other):
return self.number - other.number
>>> x = Subtract(5)
>>> y = Subtract(10)
>>> x - y # FAILS!
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
x - y
TypeError: unsupported operand type(s) for -: 'Subtract' and 'Subtract'
>>> x.__rsub__(y) # WORKS!
-5
अगर मैं बदल __rsub__
__sub__
करने के लिए, यह काम करता है: यहाँ कोड है।
मैं क्या गलत कर रहा हूं? इन रिवर्स ऑपरेटरों का उद्देश्य भी क्या है?
लेकिन स्पष्ट रूप से '__rsub__' को कॉल करने के तरीके कैसे आते हैं? – Randy
क्योंकि '__rsub__' एक फ़ंक्शन है जिसे आपने परिभाषित किया है और आप इसे किसी अन्य फ़ंक्शन की तरह कॉल कर सकते हैं; यह केवल '-' ऑपरेटर को लागू करने के लिए स्वचालित रूप से नहीं बुलाया जाएगा। – geoffspear
@ रैंडी: क्योंकि जब आप इसे स्पष्ट रूप से कहते हैं, तो यह केवल एक नियमित विधि है। आप उम्मीद क्यों करेंगे कि यह काम न करे? '__rsub__' के बारे में विशेष बात यह है कि कुछ परिस्थितियों में, पायथन एक घटाव ऑपरेशन ' - <__rsub__'' पर कॉल में <कुछ और> 'का अनुवाद करेगा - लेकिन उत्तर में समझाया गया है, उन निश्चित परिस्थितियों में मौजूद नहीं हैं आपका उदाहरण –