我需要编写一个涉及日期的类。我应该重载+
运算符以允许将天数添加到日期中。为了解释它的工作原理:一个Date
对象用格式(year,month,date)表示为(2016,4,15)。将整数10添加到这个日期后应该得到(2016,4,25)。 Date
类具有值self.year
,self.month
,self.day
。
我的问题是代码应该以Date + 10
和10 + Date
的形式工作。同时,Date-1
应该按照添加负数天数的方式工作。例如:Date(2016,4,25)-1
返回Date(2016,4,24)
。
我的代码在Date + 10
的形式下完美运行,但在10 + Date
或D - 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))
以下是我收到的错误信息
TypeError:不支持使用+运算符:'int'和'Date'
TypeError:不支持使用-运算符:'Date'和'int'
__radd__
。 - Ozgur Vatansever