Python赢得了';不能识别函数中的参数
我已经创建了一个包含3个参数的函数的对象,但是程序不会获取我的最后一个参数dy 代码Python赢得了';不能识别函数中的参数,python,arrays,pygame,Python,Arrays,Pygame,我已经创建了一个包含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
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'
initiate\u blast
被定义为实例方法,您在类上调用它
因此,没有传递任何隐式的self
参数,因此您将其称为:
blaster.initiate_blast(self=team.x,xx=team.y,yy=5,dx=5)
即使调用本身没有爆炸,它也会在第一行爆炸,因为如果没有xarray
属性,self
将是无意义的
顺便说一句,用小写字母命名“适当的”类是非常糟糕的形式。对于一些内置和基于类的装饰器或类似的东西,这是可以的,但这里不是这样,
blaster
显然是作为一个实际类型,而不是作为一个碰巧是一个类的任意可调用对象。您可能在下面重新定义了initiate\u blast。这是否回答了您的问题?