Python错误 TypeError: __init__() 需要2个参数(给定1个)
在用Python编程的时候,我遇到了一个错误,提示我需要两个参数,但我只提供了一个。
TypeError: __init__() takes exactly 2 arguments (1 given)
我尝试过添加额外的参数和其他方法,但还是没找到解决办法。这个参数是类里的self参数,我的代码如下。
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 个回答
2
你的 NPCHandler
类需要一个参数(npcId
),但是当你在 GetNPCHandler
里面创建一个新对象时,你没有传递任何参数。
错误信息说你传递了一个参数的原因是因为 self
是自动传递的。你还需要传递第二个参数(npcId
)。