from datetime import datetime class TimeSlot(): def __init__(self, name: str, start: datetime = datetime.now(), end: datetime = None): self.name = name self.start = start if end: self.end = end self._creation_time = datetime.now().timestamp() @property def name(self): return self._name @name.setter def name(self, n: str): self._name = n @property def start(self): return datetime.fromtimestamp(self._start) @start.setter def start(self, d: datetime): self._start = d.timestamp() @property def end(self): if "_end" in self.__dict__: return datetime.fromtimestamp(self._end) return None @end.setter def end(self, d: datetime): if d < self.start: raise ValueError("End date must be after the start date.") self._end = d.timestamp()