from typing import final from PySide6.QtWidgets import QWidget from Movie import Movie from enum import Enum class ShopItemType(Enum): """ Enum dictating types of items that can be bought from the cinema. """ Movie = 0 Popcorn = 1 Frozen_Coke = 2 @final class ShopItem: """ Represents an item that can be bought from the cinema. """ def __init__(self, type: ShopItemType, quantity: int, movie: Movie | None = None): """ Creates a new ShopItem. Throws: ValueError - type is ShopItemType.Movie, but movie is not provided as a paramater Example (creates a ShopItem with type popcorn and quantity 3): ShopItem(ShopItemType.Popcorn, 3) """ self.type = type self.movie = movie self.quantity = quantity self.cost: float match type: case ShopItemType.Movie: if movie != None: self.cost = movie.price else: raise ValueError("ShopItem with type ShopItemType.Movie must provide a movie as an argument") case ShopItemType.Popcorn: self.cost = 9.95 pass case ShopItemType.Frozen_Coke: self.cost = 4.95 @final class Cart: def __init__(self): self.contents: list[ShopItem] = [] def addItem(self, item: ShopItem): self.contents.append(item) pass cart = Cart() class CartView(QWidget): def __init__(self): super().__init__() global cart self.setWindowTitle("Work in progress!")