class ListItem: def __init__(self, name: str, price: float, quantity: int): self.name = name self.price = price self.quantity = quantity self.is_basket = False def toggle_basket(self): self.is_basket = not self.is_basket def __str__(self) -> str: if self.is_basket: return f"in basket" # on actual screen should be crossed/marked off else: return f"{self.name:<32} | {str(self.quantity):>2} | {self.price:>6.2f}" class ShopList: def __init__(self, items: []): self.items = items def clear(self): self.items = [] def add_item(self, item: ListItem): self.items.append(item) def pop_item(self, index: int): self.items.pop(index) def toggle_basket(self, index: int): self.items[index].toggle_basket() # main() below this line def main(): newlist = ShopList([ListItem("Oranges", 2.50, 5), ListItem("Apple", 69.99, 1)]) for i in newlist.items: print(i) if __name__ == "__main__": # test main()