@hpp157
2016-08-14T08:29:17.000000Z
字数 736
阅读 1725
python
由于绑定方法(bound methods)自动的把实例和类方法(class's methods)打包在一起,你可以在任何地方像使用简单函数一样使用它,最常见的使用,就是把方法注册成tkinter GUI接口中事件回调处理器的代码。下面是一个简单的例子。
def handler():
....use globals for state..
widget = Button(text='spam',command=handler)
要为按钮点击事件注册一个handle时,通常是将一个不带参数的可调用的对象(callable object)传递给command关键词参数 。函数名(以及一个匿名函数lambdas)都可以使用,而类一级的方法(class-level methods)只要是绑定方法也可以使用:
class MyGui:
def handler(self):
...use self.arrt for state..
def makewidgets(self):
b = Button(text='spam',command=self.handler)
在这里,事件处理器是self.handler(一个绑定方法对象),它记住self和MyGui.handler。因为handler稍后因事件而启用时,self会引用原始实例(origin instance),这个方法和类一级(class-level)的方法一样能访问到在事件之间(between events)可以保留状态信息( retain state)的实例属性(instance attributes)。如果利用简单函数,状态信息一般都必须通过全局变量保存。