2014-10-30 164 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對象實例傳遞給函數作爲隱含參數。

相關問題