Python 2.7.5中的匿名回调函数?

时间:2014-01-07 13:09:16

标签: python events callback wxpython anonymous-function

我试图使用python 2.7.5在wxPython应用程序中解耦GUI和Logic。由于wxPython使用事件绑定,我认为我扩展了这种方法。总结我的代码:

GUI.py

class MainInterface():
    def __SetupControlPanel(self, controlPanel):
        self.DoSomethingButton = wx.Button(controlPanel, wx.ID_ANY, "Do something")

    def BindCallback_DoSomething(self, callback):
        self.frame.Bind(wx.EVT_BUTTON, callback, self.DoSomethingButton)

main.py

def DoSomething(event):
    someLogicClass.DoSomething()

interface.BindEvent_DoSomething(DoSomething)

这很好地解耦了应用程序的两个部分,但我不喜欢在main.py中为每个回调定义一个单独的函数的方式,因为它通常只调用一个逻辑函数。从JS背景来看,我曾经能够使用匿名函数。我想象这样的事情会使我的代码更紧凑:

interface.BindEvent_DoSomething(def (event):
    someLogicClass.DoSomething()
)

有没有办法在Python中实现这样的语法?

2 个答案:

答案 0 :(得分:3)

您可以尝试使用lambda函数:

interface.BindEvent_DoSomething(lambda event: someLogicClass.DoSomething())

答案 1 :(得分:1)

您可以使用lambda函数

interface.BindEvent_DoSomething(lambda e: doSomething())