Python:将str格式转换为可调用的方法

Python:将str格式转换为可调用的方法

问题描述:

我不太清楚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

我不知道什么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