2014-03-29 150 views
1

雖然在Python編程,我遇到了這個錯誤需要2個參數,只有一個。Python錯誤TypeError:__init __()只需要2個參數(1給出)

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

我已經嘗試添加額外的參數和其他的方法,但我還沒有找到離開得到它的工作的說法是類的自我論證我的代碼如下所示。

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() 
+1

讓GetNPC()和GetNPCHandler()在第一個地方有什麼意義? – glglgl

回答

2

NPCHandler類需要一個參數(npcId),但是當你的內心GetNPCHandler創建一個新的對象,要傳遞沒有參數。

錯誤消息說您傳遞一個參數的原因是self隱式傳遞。您還需要傳遞第二個參數(npcId)。

相關問題