为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2019-08-01 15:54:32
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的方式将未绑定的方法绑定到一个实例并继续传递它而不调用它?
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

这可以使用types.MethodType干净地完成。例:

import typesdef f(self): print selfclass C(object): passmeth = types.MethodType(f, C(), C) # Bind f to an instance of Cprint meth # prints <bound method C.f of <__main__.C object at 0x01255E90>>


查看完整回答
反对 回复 2019-08-01
  • 3 回答
  • 0 关注
  • 564 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信