left()只取一个参数,给出2,但我只给1?

时间:2014-10-30 02:27:32

标签: python function arguments

def executor(com, rule):
for element in rule.start:
    if element[0] == 'fd':
        com.forward
    elif element[0] == 'bk':
        com.backward
    elif element[0] == 'rt':
        com.right(element[1])
    elif element[0] == 'lt':
        print element[1]
        com.left(60)
    elif element[0] == 'scale':
        com.scale = com.scale * float(element[1])
executor(com, rule)

好的,这是我的函数,它有2个参数,我用2个参数调用它。有用。它是com.left(60)部分,它不起作用。

class Command():
empty = []
count = 0
diction = {}
scale = 7
forward = fd(bob, float(rule.length)*scale)
backward = bk(bob, float(rule.length) * scale)
def right(angle):
    rt(bob, int(angle))
def left(angle):
    lt(bob, int(angle))
com = Command()

这是我的班级。正如您所看到的,左右几乎完全相同,但由于某种原因左右不起作用。我想用元素[1]调用com.left和正确的函数一样,但是它说的相同(elemtent [1]是60)。

我尝试用2个参数调用它,但后来我得到 trunc 错误,我也不知道它是什么。

1 个答案:

答案 0 :(得分:0)

尝试在左右功能中添加自我参数。这将允许这些函数作用于命令类的实例。

def right(self, angle):
    rt(bob, int(angle))
def left(self, angle):
    lt(bob, int(angle))

每当你写com.something()时,com对象实例作为隐式参数传递给函数。