TypeError:testing()只需要2个参数(给定1个)

时间:2014-07-14 19:11:09

标签: python python-2.7

我的python代码中出现了一个奇怪的错误。我检查了SO上的其他帖子是否有这个问题,但其他人似乎在代码中有一些错误,我可以弄明白。我无法确定这个。

这是函数调用:

print "Desired Action: " , person.bestAction(indx)

这是npc类中方法的定义,其中person是一个对象。

def bestAction(self, position):
    if self.beingPassed:
        if self.protestCost() > self.waitCost():
            self.nextAction = "Protest"
    else:
        if self.passCost() > self.waitCost():
            if position != 0: 
                self.nextAction = "Pass"

这给了我以下错误:

File "main.py", line 91, in stepCounter
  if person.bestAction() == "Pass":
TypeError: bestAction() takes exactly 2 arguments (1 given)

我相信自我是一个隐含的参数。所以我应该只给出一个我传递给函数的参数。

我很困惑,我不明白我错过了什么。

2 个答案:

答案 0 :(得分:4)

当函数作为对象的方法调用时,

self只是一个隐式参数。 testing块中未包含class Foo(object): ...的定义,testing(2)不是方法调用,因此不会隐式传递self

答案 1 :(得分:1)

根据您的操作,建议您执行以下操作:

class Tester(object):
    def testing(self,someint):
        print someint

tester = Tester()
tester.testing(2)