import datetime class DateRange: def __init__(self, start_date: datetime.date, end_date: datetime.date): if type(start_date) != datetime.date or type(end_date) != datetime.date: raise TypeError("start_date and end_date must be date objects.") if start_date > end_date: raise ValueError("start_date can't be after end_date.") self._start_date = start_date self._end_date = end_date @property def start_date(self): return self._start_date @start_date.setter def start_date(self, value: datetime.date): if type(value) != datetime.date: raise TypeError("start_date must be a date object.") if value > self._end_date: raise ValueError("start_date can't be after end_date.") self._start_date = value @property def end_date(self): return self._end_date @end_date.setter def end_date(self, value: datetime.date): if type(value) != datetime.date: raise TypeError("end_date must be a date object.") if value < self._start_date: raise ValueError("end_date can't be before start_date.") self._end_date = value