Python对象不接受参数

时间:2017-06-21 19:48:07

标签: python function object methods

我正在尝试在python中创建一条蛇,我通过一个将成为蛇的对象来做这件事。我试图从我的对象内部调用createSnake函数,但参数不被接受。

我的IDE正在返回:

TypeError: createsnake() missing 1 required positional argument: 'y_coordinate'

这是我的蛇码:

class Snake(object):
def createsnake(self, x_coordinate, y_coordinate):
    grid[x_coordinate][y_coordinate] = 2

以下是我如何调用该方法:

Snake.createsnake(1, 1)

2 个答案:

答案 0 :(得分:3)

当函数具有self参数时,这意味着它必须从类的实例中调用。

这意味着您无法直接从班级createsnake拨打Snake;你必须首先制作 Snake

snake = Snake()
snake.createsnake(1, 1)

或者,如果您希望能够从Snake类调用该函数,则应该使该函数为static:

class Snake(object):
    @staticmethod
    def createsnake(x_coordinate, y_coordinate):
        grid[x_coordinate][y_coordinate] = 2

Snake.createsnake(1, 1)

另一个选项,因为你的函数用于执行某种初始化,就是将函数更改为构造函数,以便在创建新的Snake时立即执行:

class Snake(object):
    def __init__(self, x_coordinate, y_coordinate):
        grid[x_coordinate][y_coordinate] = 2

snake = Snake(1, 1)

答案 1 :(得分:0)

问题是你没有在Snake实例上调用create方法。这是抱怨,因为您没有将参数传递给“self”参数,因为您在Snake类上调用它。 snake的一个实例将提供self参数。

尝试

snake = Snake() snake.createsnake(1,1)