【问题标题】:Python objects aren't accepting argumentsPython 对象不接受参数
【发布时间】:2017-11-24 21:18:05
【问题描述】:

我正在尝试在 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)

【问题讨论】:

  • createsnake() 而不是__init__() 有什么意义?

标签: python function object methods


【解决方案1】:

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

这意味着你不能直接从Snake类调用createsnake;你必须先制作Snake

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

或者,如果您确实希望能够从Snake 类调用函数,则应该将函数设为静态:

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)

【讨论】:

    【解决方案2】:

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

    试试

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

    【讨论】:

      猜你喜欢
      • 2016-09-03
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2012-03-18
      • 1970-01-01
      相关资源
      最近更新 更多