Я обязан написать класс с датами. Я должен перегрузить оператор +
чтобы разрешить добавление дней к датам. Чтобы объяснить, как это работает: объект 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 + D
или 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: unsupported operand type(s) for +: 'int' and 'Date'
TypeError: unsupported operand type(s) for -: 'Date' and 'int'