首页 > 解决方案 > Python 无法识别函数中的参数

问题描述

我创建了一个对象,其中包含一个具有 3 个参数的函数,但是,程序不会获取我的最后一个参数 dy。

编码

class blaster(object):

    def __init__(self,x,y,r):
        self.x = x
        self.y = y
        self.radius = r
        self.xvelocity = 5
        self.yvelocity = 0
        self.blastercount = 0
        self.isblasting = False
        self.xarray = []
        self.yarray = []
        self.xcounter = []
        self.ycounter = []
    def initiate_blast(self,xx,yy,dx,dy):
        self.xarray.append(int(mn.x))
        self.yarray.append(int(mn.y))
        self.xcounter.append(int(dx))
        self.ycounter.append(int(dy))

该函数被调用:

blaster.initiate_blast(troop.x,troop.y,5,5)

输出:

TypeError: initiate_blast() missing 1 required positional argument: 'dy'

标签: pythonarrayspygame

解决方案


initiate_blast被定义为实例方法,并且您在class上调用它。

因此没有self传入隐式参数,所以你调用这个:

blaster.initiate_blast(self=troop.x, xx=troop.y, yy=5, dx=5)

即使调用本身没有爆炸,它也会在第一行爆炸,就像self没有xarray属性的废话一样。

顺便用小写命名“正确的”类是非常糟糕的形式。对于某些内置函数和基于类的装饰器等来说没关系,但这里不是这种情况,blaster显然是作为一个实际类型,而不是作为一个恰好是一个类的任意可调用对象。


推荐阅读