जब एक नाव मूल्य के लिए एक पूर्णांक मान को जोड़ने के साथ अलग व्यवहार, मुझे एहसास हुआ कि __add__
विधि इस जैसे ठीक काम कर रहा है, तो नाव पर कहा जाता है,:पायथन: __add__ और +, नाव और पूर्णांक
>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0
लेकिन एक पूर्णांक पर बुलाया नहीं तो:
>>> m.__add__(n)
NotImplemented
पहले तो मैंने सोचा कि __add__
सिर्फ int
और float
प्रकार के लिए अलग तरह से लागू किया जा रहा था (नाव प्रकार प्रकार int करने के लिए जोड़ा जा करने के लिए स्वीकार करने की तरह है, लेकिन विपरीत नहीं)। तब मैंने देखा कि अगर मैं + ऑपरेटर का उपयोग करता हूं तो सब ठीक काम करता है:
>>> n + m
3.0
>>> m + n
3.0
क्या कोई जानता है कि यह क्यों हो रहा है? __add__
और +
एक दूसरे से गहराई से संबंधित नहीं हैं?
'नहीं कार्यान्वित' 'm .__ radd __ (n)' –
@ इस-vidor के लिए भी वापस लौटा: गलत '__radd__' विधि। – user2357112
@ user2357112 सच है! फिर वह समाधान है। –