मेरे पास एक वेक्टर क्लास है और मैंने __mul__
विधि को एक वेक्टर को गुणा करने के लिए परिभाषित किया है।पायथन में विधि उपनाम परिभाषित करें?
def __mul__(self, other):
x = self.x * other
y = self.y * other
new = Vector()
new.set_pos((x, y))
return new
मेरे समस्या मैं नहीं जानता कि वह यह है कि जो है जो संख्या और वेक्टर के बीच:
यहाँ __mul__
तरीका है। यदि स्वयं नंबर है, self.x एक त्रुटि उठाता है। (मैं शायद इस मुद्दे पर भूल कर रहा हूँ: है? "अन्य" हमेशा एक नंबर)
तो मैं यहां मिली: Python: multiplication override मैं कर सकता है कि:
__rmul__ = __mul__
लेकिन मैं कैसे कर सकते हैं एक में है कि कक्षा परिभाषा?
कुछ की तरह:
def __rmul__ = __mul__
क्या यह जानने का कोई तरीका है कि कौन सी कॉल की जाएगी? –
'__mul__' पहले, फिर' __rmul__' अगर यह विफल हो जाता है। – katrielalex
बेहतर: या "बी को अपने आप को गुणा करने के लिए बताएं (बी)"। गुणात्मक ऑपरेटर को कम्यूटिव नहीं होना चाहिए। – glglgl