2014-03-05 30 views
-2

我試圖建立一個Python列表中的命令列表[],它被傳遞給另一個python對象。沒有崩潰,但收件人傳遞了一個空參數。在Python中通過引用傳遞:傳遞列表並添加字符?

該對象是由panel,slot_handler和slot組成的python腳本menu.py的一部分。他們一起在pygame中創建了一個滾動面板對象:面板是頂級的。面板有一個實例slot_handler,其中包含鏈接列表中的插槽。

我從來沒有在python中試過這個。我想知道這是否可能。如果這不可行,我願意接受。

class slot(object): 
    def getcommands(self,mylist): 
     if(self.has_phrase): 
      if(self.phrase=="Move Up"): 
       mylist.append('u') 
      elif(self.phrase=="Move Down"): 
       mylist.append('d') 
      elif(self.phrase=="Move Left"): 
       mylist.append('l') 
      elif(self.phrase=="Move Right"): 
       mylist.append('r') 
      elif(self.phrase=="Open"): 
       mylist.append('o') 
      elif(self.phrase=="Close"): 
       mylist.append('c') 
      elif(self.phrase=="Rotate"): 
       mylist.append('s') 
     if(self.has_next): 
      self.next.getcommands(mylist) 

... 
class slot_handler(object): 
    def getcommands(self): 
     commands = [] 
     self.top_slot.getcommands(commands) 

... 
class panel(object): 
    def getcommands(self): 
     return self.slots.getcommands() 
+2

「我想知道這是可能的」。你試過了嗎?它失敗了嗎? – hivert

+0

附註:您的if-elif樹太可怕了。只用一個字典... – Hyperboreus

+0

我解決了這個問題,通過傳入一個列表變量到panel.getcommands(),我猜python函數不能返回一個列表而不會超出範圍? –

回答

3

是的,這是可能通過一個列表作爲參數,並追加到它的功能:

>>> def f(x): x.append('u') 
... 
>>> mylist = [] 
>>> f(mylist) 
>>> mylist 
['u']