initiate_blast
определяется как метод instance , и вы вызываете его в классе .
Следовательно, неявный параметр self
передано, поэтому вы вызываете это:
blaster.initiate_blast(self=troop.x, xx=troop.y, yy=5, dx=5)
Даже если бы сам вызов не взорвался, он бы взорвался в самой первой строке, поскольку self
был бы бессмысленным без xarray
attribute.
Крайне плохой тон случайно называть «правильные» классы строчными буквами. Это нормально для некоторых встроенных функций, декораторов на основе классов и т.п., но здесь это не так, blaster
, очевидно, предназначен как фактический тип, а не как произвольный вызываемый объект, который просто является классом.