Python Tricks
系列 - Python 技巧
目录
如何实现给一个类成员函数绑定事件
场景:插件系统中,需要给插件的函数绑定
on_message,当收到消息时候调用函数。
一切都是绑定方法和未绑定方法的处理
方案1:
@on_message装饰器给需要的插件添加metadata- 在
__init__中,遍历全部成员函数,如果有metadata,就从self上getattr下来这个绑定方法 - 在加载插件时候实例化插件类
方案2:
@on_message装饰器直接记录未绑定方法,以及它对应的模块- 在加载插件时候,根据所在模块找到全部未绑定方法
- 实例化插件类,通过
functools.partial把插件实例作为第一个参数(也就是self)绑定到原始处理函数上,这时候就得到了绑定方法