import pygame

class Sprite():
    def __init__(self, name):
        self.name = name
        self.costumes = []

    def addCostume(self, costumePath):
        costume = pygame.image.load(costumePath)
        self.costumes.append(costume)

import pygame, time, random
        
class Stage():
    def __init__(self, name):
        self.name = name
        self.costumes = []

    def addCostume(self, costumePath):
        costume = pygame.image.load(costumePath)
        self.costumes.append(costume) 

class Sprite(Stage):
    def __init__(self, name):
        Stage.__init__(self, name)
        self.xpos = 0
        self.ypos = 0
    
def beginGame():
    pygame.init()

    screen = pygame.display.set_mode((800, 600)) # Add customizable dimensions later on?
    caption = pygame.display.set_caption("Hiss Project")

Split Sprite and Stage, begin code
Split Sprite and Stage, begin code

The way I see it, sprites should be an extension of the stage. After all, the stage is like one big sprite that can't move.
Also, begin code has been added.