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

3

我不太清楚该搜索什么来解决我的问题,所以我想在这里找到答案。

我正在使用Python 3.5.2和pygame创建图形用户界面。我目前正在处理错误弹出窗口,具体取决于弹出的错误,按钮功能是不同的。我想将应该执行的函数作为参数传递给另一个类。

代码大致如下:

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个回答

2

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

那么您可以通过执行以下操作来使用它

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

这正是我所需要的,谢谢!它运行得很好。 - Julian
1
正在等待它成为可能。你回答得太快了。 :) - Julian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接