pythonnew,函数只要求一个参数,给定两个

pythonnew,函数只要求一个参数,给定两个,python,Python,我有下面的代码 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

我有下面的代码

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
。我错了吗


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

您需要将
self
作为
getActionUtility
方法的第一个参数。当您像这样调用该方法时:

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

def getActionUtility(self, action):
    return 0

它不是,因为在你发布的代码中没有任何迹象表明这些是类中的方法。“它不是”指什么?它指的是你问题的最后一句话,我正在回答。“…我认为这应该涵盖整个问题。”哦,好吧,下面的那个人解决了。我想他用了推理之类的方法。