目录

Python Tricks

系列 - Python 技巧

场景:插件系统中,需要给插件的函数绑定on_message,当收到消息时候调用函数。

一切都是绑定方法未绑定方法的处理

方案1:

  1. @on_message装饰器给需要的插件添加metadata
  2. __init__中,遍历全部成员函数,如果有metadata,就从self上getattr下来这个绑定方法
  3. 在加载插件时候实例化插件类

方案2:

  1. @on_message装饰器直接记录未绑定方法,以及它对应的模块
  2. 在加载插件时候,根据所在模块找到全部未绑定方法
  3. 实例化插件类,通过functools.partial把插件实例作为第一个参数(也就是self)绑定到原始处理函数上,这时候就得到了绑定方法

相关内容