class Warenkorb: def __init__(self, credit): self.__credit = credit self.__items = {} def addItem(self, item_name: str, price: float): self.__items[item_name] = price def getItems(self) -> dict: return self.__items def balance(self) -> float: return self.__credit def checkout(self) -> bool: price = 0 for _, value in self.__items.items(): price += value works = self.__checkCredit(price) self.__credit -= price if works else 0 if works: self.__items = {} return works def __checkCredit(self, total: float) -> bool: return True if total <= self.__credit else False class AddItemCounterDecorator(Warenkorb): def __init__(self, warenkorb: Warenkorb): self._warenkorb = warenkorb self.__counter = 0 def __del__(self): print(f"ItemCounter: {self.__counter}") def addItem(self) -> str: self.__counter += 1 return self._warenkorb.addItem()