में __add__ विधि को ठीक से अधिभारित करने के लिए मुझे तारीखों को शामिल करने वाली कक्षा लिखने की आवश्यकता है। मुझे तारीखों में जोड़े जाने की अनुमति देने के लिए + ऑपरेटर को अधिभारित करना है। यह बताने के लिए कि यह कैसे काम करता है: प्रारूप वर्ष, महीने, दिनांक में दिनांक वस्तु (2016,4,15) के रूप में दर्शायी जाती है। इसमें पूर्णांक 10 जोड़ना चाहिए (2016,4,25)। डेट क्लास में स्वयं का मूल्य है। Self.month, self.dayपायथन
मेरी समस्या यह है कि कोड को फॉर्म (दिनांक + 10) के साथ-साथ (10 + दिनांक) में काम करना चाहिए। तिथि भी - 1. दिनों की नकारात्मक संख्या जोड़ने की भावना में काम करना चाहिए। तिथि (2016,4,25) - 1 रिटर्न तिथि (2016,4,24)।
मेरा कोड पूरी तरह से (दिनांक + 10) के रूप में काम करता है लेकिन फॉर्म (10 + डी) या (डी -1) में नहीं है।
def __add__(self,value):
if type(self) != int and type(self) != Date or (type(value) != int and type(value) != Date):
raise TypeError
if type(self) == Date:
day = self.day
month = self.month
year = self.year
value = value
if type(value) != int:
raise TypeError
days_to_add = value
while days_to_add > 0:
day+=1
if day == Date.days_in(year,month):
month+=1
if month > 12:
day = 0
month = 1
year+=1
day = 0
days_to_add -=1
return(Date(year,month,day))
इन त्रुटियों को मैं कर रहे हैं
लेखन त्रुटि: 'int' और 'दिनांक'
लेखन त्रुटि:: के लिए असमर्थित संकार्य प्रकार (ओं) + का समर्थन नहीं संकार्य प्रकार (ओं): - 'तिथि' और 'int'
आपको '__radd__' को भी लागू करने की आवश्यकता है। – ozgur
http://stackoverflow.com/a/36745772/5320906 पर एक नज़र डालें। घटाव एक अलग ऑपरेशन है जिसके लिए आपको '__sub__' और' __rsub__' विधियों को लागू करने की आवश्यकता होगी। – snakecharmerb
मैं देखता हूं। तो अगर मेरा प्रोफेसर मुझे "ऑपरेटर ओवरलोड" करने के लिए निर्देश देता है तो वह स्वचालित रूप से इन सभी विधियों को बनाने का मतलब रखता है? या इसे एक और तरीका रखने के लिए, इन सभी तरीकों से अधिभार को परिभाषित किया गया है? –