Python не распознает параметр в функции - PullRequest
0 голосов
/ 28 мая 2020

Я создал объект и включил функцию с 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'

1 Ответ

2 голосов
/ 28 мая 2020

initiate_blast определяется как метод instance , и вы вызываете его в классе .

Следовательно, неявный параметр self передано, поэтому вы вызываете это:

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

Даже если бы сам вызов не взорвался, он бы взорвался в самой первой строке, поскольку self был бы бессмысленным без xarray attribute.

Крайне плохой тон случайно называть «правильные» классы строчными буквами. Это нормально для некоторых встроенных функций, декораторов на основе классов и т.п., но здесь это не так, blaster, очевидно, предназначен как фактический тип, а не как произвольный вызываемый объект, который просто является классом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...