2014-10-30 99 views
0
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)部分,不起作用。left()只需要一个参数,给定2,但我只给1?

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

尝试添加一个自我参数到您的左和右功能。这将允许这些函数对您的命令类的实例进行操作。

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

每当你写​​,该com对象实例传递给函数作为隐含参数。

相关问题