Python:绑定一个未绑定的方法?

Python:绑定一个未绑定的方法?

在Python中,有没有办法绑定未绑定的方法而不调用它?

我正在编写一个wxPython程序,对于某个类,我认为将所有按钮的数据组合在一起作为类级别的元组列表是很好的,如下所示:

class MyWidget(wx.Window):
    buttons = [("OK", OnOK),
               ("Cancel", OnCancel)]

    # ...

    def Setup(self):
        for text, handler in MyWidget.buttons:

            # This following line is the problem line.
            b = wx.Button(parent, label=text).Bind(wx.EVT_BUTTON, handler)

问题是,由于所有的值handler都是未绑定的方法,我的程序在一个壮观的火焰中爆炸,我哭泣。

我在网上寻找解决方案似乎应该是一个相对简单,可解决的问题。不幸的是我找不到任何东西。现在,我正在functools.partial尝试解决这个问题,但有没有人知道是否有一种干净,健康,Pythonic的方式将未绑定的方法绑定到一个实例并继续传递它而不调用它?


智慧大石
浏览 565回答 3
3回答

守候你守候我

这可以使用types.MethodType干净地完成。例:import&nbsp;typesdef&nbsp;f(self):&nbsp;print&nbsp;selfclass&nbsp;C(object):&nbsp;passmeth&nbsp;=&nbsp;types.MethodType(f,&nbsp;C(),&nbsp;C)&nbsp;#&nbsp;Bind&nbsp;f&nbsp;to&nbsp;an&nbsp;instance&nbsp;of&nbsp;Cprint&nbsp;meth&nbsp;#&nbsp;prints&nbsp;<bound&nbsp;method&nbsp;C.f&nbsp;of&nbsp;<__main__.C&nbsp;object&nbsp;at&nbsp;0x01255E90>>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python