2017-11-25 258 views
2

我不太清楚google能找到我的問題的解決方案,所以我會盡力在這裏找到它。Python:將str格式轉換爲可調用的方法

我使用pygame在Python 3.5.2中創建了一個Gui。我正在積極研究具有不同按鈕功能的錯誤彈出窗口,具體取決於彈出的錯誤。我想給這個應該作爲另一個類的參數執行的函數。

代碼看起來是這樣的:

def i_want_to_call_this(self): 
    print("Button works.") 

def button_with_action(self, action): 
    self.button(self.action) 

其他類將給予其功能的按鍵都會有這樣的說法:

popup_instance.popup_with_action(i_want_to_call_this) 

問題但被該參數解析轉換爲字符串格式並且不可調用。

+1

顯示'按鈕'代碼 - 可能它期望文本作爲第一個參數來顯示它。 – furas

回答

1

我不知道什麼button方法(我想它綁定到一個給定的按鈕作爲參數傳遞可調用),但你應該考慮使用getattr,以便能夠通過使用其名稱作爲字符串傳遞,如下

def button_with_action(self, action): 
    dyn_created_callable = getattr(self, action) 
    self.button(dyn_created_callable) 

當然沒有什麼可以阻止你做

直接

def button_with_action(self, action): 
    self.button(getattr(self, action)) 

那你就再使用做0

#... 
    self.button_with_action('i_want_to_call_this') 
+0

這就是我正在尋找的,謝謝!它工作正常。 – Julian

+1

正在等待它成爲可能。你回答得很快。 :) – Julian

相關問題