class adapter: def __init__(self, target): if target is None: raise Exception("Adapter target must not bo None.") self.__result = None self.__target = target @property def target(self): return self.__target @property def result(self): if self.__result is None: self.__result = self.__class__.convert(self.target) return self.__result return self.__result def convert(target): raise Exception("This function must be overwriten.")