0

我在下面有以下代码

def runRobot(self):
  allActions = ('North','South','East','West','Suck')
  bestActionUtility = 0
  toDo = 'Suck'
  for a in allActions:
    actionUtility = self.getActionUtility(a)
    if(actionUtility > bestActionUtility):
      toDo = a
      bestActionUtility = actionUtility
  # Do lots of robot stuff here!
  self.action = random.choice(['North','South','East','West','Suck'])

def getActionUtility(action):
  return 0

当调用 runRobot 时,我不断收到错误消息,告诉我我提供getActionUtility(action)了两个参数。我不明白这是怎么可能的。我认为我的 for 循环会剥离allActions列表的每个元素(数组?或者是仅 python 列表)并调用getActionUtility每个操作。我错了吗?

如果需要更多代码,请告诉我,但我认为这应该涵盖整个问题。

4

1 回答 1

1

您需要self在方法中使用第一个参数getActionUtility。当您调用这样的方法时:

self.getActionUtility(a)

self作为第一个参数隐式传递给方法。因此,只需将方法签名更改为:

def getActionUtility(self, action):
    return 0
于 2013-09-26T17:32:04.890 回答