Error de Python TypeError: __init __ () toma exactamente 2 argumentos (1 dado)

Durante la progtwigción en Python me he encontrado con este error sobre la necesidad de 2 argumentos y tener solo uno.

TypeError: __init__() takes exactly 2 arguments (1 given) 

He intentado agregar argumentos adicionales y otras formas, pero no he encontrado la forma de hacerlo funcionar. El argumento es el argumento de clase propia. Mi código se muestra a continuación.

  import sys, pygame pygame.init() size = width, height = 750, 500 backgroundColour = 23, 195, 74 screen = pygame.display.set_mode((size), 0, 32) class NPC(): npcList = [] def GetNPCList(self): listNPC = [] for i in range(0, self.npcList): test = self.npcList[i].id listNPC.append(test) print(listNPC) def GetNPC(): return NPC() class NPCHandler(object): def __init__(self, npcId): self.id = id def newNPC(self, npcId): return NPCHandler(npcId) def addNPC(self, n = NPC): return n.npcList.append(n) def GetNPCHandler(): return NPCHandler() def main(): while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() for i in range(0, 5): GetNPCHandler().addNPC(GetNPCHandler().newNPC(1)) GetNPC().GetNPCList() screen.fill(backgroundColour) #pygame.draw.circle(screen, (0, 0, 0), (100, 100), 10, 0) pygame.display.update() if __name__ == "__main__": main() 

Su clase NPCHandler requiere un argumento ( npcId ), pero cuando crea un nuevo objeto dentro de GetNPCHandler , no está pasando ningún argumento.

La razón por la que el mensaje de error dice que está pasando un argumento es que el self se pasa implícitamente. También debe pasar el segundo argumento ( npcId ).