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 错误,我也不知道它是什么。
答案 0 :(得分:0)
尝试在左右功能中添加自我参数。这将允许这些函数作用于命令类的实例。
def right(self, angle):
rt(bob, int(angle))
def left(self, angle):
lt(bob, int(angle))
每当你写com.something()
时,com
对象实例作为隐式参数传递给函数。