TypeError:detectCollisions()只接受8个参数(给定9个参数)

2024-10-03 09:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直得到这个类型的error TypeError:detectCollisions()正好接受8个参数(给定9个)

def detectCollisions(x1,y1,w1,h1,x2,y2,w2,h2,):

    if (x2+w2>=x1>=x2 and y2+h2>=y1>=y2):

        return True

    elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1>=y2):

        return True

    elif (x2+w2>=x1>=x2 and y2+h2>=y1+h1>=y2):

        return True

    elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1+h1>=y2):

        return True

    else:

        return False

def update(self,gravity,blocklist):
    if(self.velocity<0):
        self.falling=True
    blockX,blockY=0,0

    collision=False

    for block in blocklist:

        collision = self.detectCollisions(self.x, self.y, self.width, self.height, block.x, block.y, block.width, block.height)

我不确定它有什么问题,我已经添加了一个def来检测碰撞


Tags: andselftruereturndefh2blockh1
2条回答

我确信您在方法声明中遗漏了self

def detectCollisions(x, y, ....

第一个参数应该是self,然后是自定义参数。在

当调用它时,self被隐式传递(因此,当您在调用中仅使用8个参数时,它将获得9个参数)

这是学习python的一个典型问题。 成员函数中的第一个参数始终是“self”参数。 它被包括在“幕后”中。在

这就是为什么当你只给出8个论点时,它会说9个论点。 下面是一个类声明,演示一下代码:

class TestClass():
    def test(self, _param1, _param2):
        print("_param1:" + str(_param1) + "_param2:" + _param2)

_instance = TestClass()
_instance.test("a", "b")
_instance.test("a", "b", "c")

第一个调用有效,第二个调用无效,您将得到典型的错误消息。 这也反过来说,您总是必须在声明中添加“self”参数。在

相关问题 更多 >