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)
问题但被该参数解析转换为字符串格式并且不可调用。
答
我不知道什么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')
显示'按钮'代码 - 可能它期望文本作为第一个参数来显示它。 – furas