# Taken partially from https://github.com/kennknowles/python-either from abc import ABC, abstractmethod class Either(ABC): def __init__(self, v): self._v = v @property def value(self): return self._v @property @abstractmethod def is_left(self): pass @property @abstractmethod def is_right(self): pass class Left(Either): @property def is_left(self): return True @property def is_right(self): return False class Right(Either): @property def is_left(self): return False @property def is_right(self): return True