我的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)
我相信自我是一个隐含的参数。所以我应该只给出一个我传递给函数的参数。
我很困惑,我不明白我错过了什么。
答案 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)